我想使用awk在文件的特定行之前和之后附加。
示例:
说我有一个5行的文件,我想awk第三行,在开头加上“ hello”,在结尾加上“再见”。
示例文件。
1. foo
2. foo
3. foo
4. foo
5. foo
结果应为hello foo goodbye
我尝试过awk 'NR==3 {print $0" goodbye"}' <file>
此行再见,但我无法弄清楚如何在行前加上“ hello”
我已经在命令中尝试过BEGIN和END,但是不确定如何处理NR == 3吗?
所需的输出应该是..
hello 3. foo goodbye
[请您试一下。要仅打印所有行的第三行以及其他详细信息。
awk 'FNR==3{print "hello " $0 " goodbye";next} 1' Input_file
OR
awk 'FNR==3{$0="hello " $0 " goodbye"} 1' Input_file
如果只想打印第三条编辑行,请尝试:
awk 'FNR==3{print "hello " $0 " goodbye"}' Input_file
如果您想根据尝试使用BEGIN
和END
仅打印第三行,然后尝试进行以下操作。
awk 'BEGIN{ORS=" ";printf "hello "} FNR==3; END{printf("%s\n","goodbye")}' Input_file
在您的情况下,使用sed
命令替换更容易(除了sed
允许就地修改文件:基本上使用-i
选项):
$ sed '3 s/.*/hello & goodbye/' file
1. foo
2. foo
hello 3. foo goodbye
4. foo
5. foo