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
如果您只想根据您的尝试使用 BEGIN
和 END
打印第 3 行,请尝试以下操作。
awk 'BEGIN{ORS=" ";printf "hello "} FNR==3; END{printf("%s\n","goodbye")}' Input_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
如果您只想根据您的尝试使用 BEGIN
和 END
打印第 3 行,请尝试以下操作。
awk 'BEGIN{ORS=" ";printf "hello "} FNR==3; END{printf("%s\n","goodbye")}' Input_file