awk 前置和附加文件行

awk prepend and append line of file

我想使用 awk 添加和附加文件的特定行。

示例:

假设我有一个包含 5 行的文件,我想 awk 第 3 行并将 "hello" 放在开头,"goodbye" 放在结尾。

示例文件。

1. foo
2. foo
3. foo
4. foo
5. foo

输出结果hello 3. foo goodbye并删除所有其他行1、2、4、5,

我试过了 awk 'NR==3 {print [=12=]" goodbye"}' <file>

这会在行后面加上再见,但我不知道如何在行前面添加 "hello"

我已经在命令中尝试了 BEGIN 和 END,但不确定如何处理 NR==3?

期望的输出应该是..

hello 3. foo goodbye

最终输出结果hello 3. foo goodbye并删除所有其他行1,2,4,5,

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

$ sed '3 s/.*/hello & goodbye/' file
1. foo
2. foo
hello 3. foo goodbye
4. foo
5. foo

能否请您尝试以下。仅打印所有行的第 3 行以及其他详细信息。

awk 'FNR==3{print "hello " [=10=] " goodbye";next} 1' Input_file

awk 'FNR==3{[=11=]="hello " [=11=] " goodbye"} 1'  Input_file

如果您只想打印第 3 行,请尝试:

awk 'FNR==3{print "hello " [=12=] " goodbye"}' Input_file


如果您只想根据您的尝试使用 BEGINEND 打印第 3 行,请尝试以下操作。

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