我正在寻找一个命令来从文件的第一行中删除前两列。列的分隔符是管道。列数各不相同。
我们只需要盲目删除前两列。下面的示例。
输入:列1|列2|列3|列4
输出列3|列4
答案1
可能最简单的命令是
sed '1s/^[^|]*|[^|]*|//g' input > output
该sed
命令将仅限1号线进行替换。
对于此输入:
foo|bar|baz|doo|bee|doo
123|456
789|101|112
它将产生该输出:
baz|doo|bee|doo
123|456
789|101|112
答案2
尝试这个命令
head -2 inputFile.txt | cut -d "|" -f 3- > outputFile.txt
答案3
如果我猜你指的是什么,那么 cut 命令应该可以完成这项工作。
echo "foo|bar|baz" | cut -d"|" -f3
因此,如果您只想编辑第一行,也可以使用 head 命令。
head -n1 filename | cut -d"|" -f3
您也可以使用 sed 来完成这项工作。
head -n1 filename | sed 's/^.*|.*|//g'
答案4
这将剪切第 1 行的前 2 个管道分隔字段,并复制文件的其余部分(第 2 行往后)而不进行任何更改。
(head -n 1 input | cut -d '|' -f 3- ; tail -n +2 input) > output
一种稍微高效但语法上更棘手的方法是:
{ head -n 1 input | cut -d '|' -f 3- ; tail -n +2 input; } > output