文件的前缀和附加行

问题描述 投票:1回答:2

我想使用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 sed line editing
2个回答
3
投票

[请您试一下。要仅打印所有行的第三行以及其他详细信息。

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


如果您想根据尝试使用BEGINEND仅打印第三行,然后尝试进行以下操作。

awk 'BEGIN{ORS=" ";printf "hello "} FNR==3; END{printf("%s\n","goodbye")}' Input_file

2
投票

在您的情况下,使用sed命令替换更容易(除了sed允许就地修改文件:基本上使用-i选项):

$ sed '3 s/.*/hello & goodbye/' file
1. foo
2. foo
hello 3. foo goodbye
4. foo
5. foo
© www.soinside.com 2019 - 2024. All rights reserved.