从文件的第一行中删除前 2 列

从文件的第一行中删除前 2 列

我正在寻找一个命令来从文件的第一行中删除前两列。列的分隔符是管道。列数各不相同。

我们只需要盲目删除前两列。下面的示例。

输入:列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

相关内容