Sed 更换生产线末端

Sed 更换生产线末端,sed,linefeed,Sed,Linefeed,我想在一行的末尾加上一堆0。识别该行的方式是,它后面跟着一行,该行以“expr1”开头 在Vim中,我所做的是: s/\nexpr1/ 0 0 0 0 0 0\rexpr1/ 而且效果很好。我知道在ubuntu中\n通常用于终止行,但每当我这样做时,我会得到一个^@符号,所以\r对我来说很好。我想我会用这个和sed,但它没有真正起作用。以下是我通常写的: sed "s/\nexpr1/ 0 0 0 0 0 0\rexpr1/" infile > outfile 行尾标记是$。试试这个:

我想在一行的末尾加上一堆0。识别该行的方式是,它后面跟着一行,该行以“expr1”开头

在Vim中,我所做的是:

s/\nexpr1/ 0 0 0 0 0 0\rexpr1/
而且效果很好。我知道在ubuntu中\n通常用于终止行,但每当我这样做时,我会得到一个^@符号,所以\r对我来说很好。我想我会用这个和sed,但它没有真正起作用。以下是我通常写的:

sed "s/\nexpr1/ 0 0 0 0 0 0\rexpr1/" infile > outfile

行尾标记是$。试试这个:

s/$/ 0 0 0 0 0 0/

根据您的环境,您可能需要转义$。

创建另一个字段会影响FS变量。例如,以制表符作为分隔符的文件将变为空格。这种现象的解决方法是指定一个不太可能出现在文件中的字段分隔符,例如-F“@#@#”
awk '{$0=$0" 0 0 0 0 0 "}1' file > tmp && mv tmp file

ruby -i.bak -ne '$_=$_.chomp!+" 0 0 0 0 0\n";print' file
awk '$(NF + 1) = " 0 0 0 0 0 0"' infile > outfile