我正在进行某些文本处理操作,最终能够获得类似这样的文件
india
sudan
japan
france
现在我想在上面的文件中添加注释,就像在最终文件中一样,它应该是
india | COUNTRY
sudan | COUNTRY
japan | COUNTRY
france | COUNTRY
整个文件中的相同评论。我该怎么做?
答案 0 :(得分:57)
有很多方法:
sed
:用给定的文字替换$
(行尾)。
$ sed 's/$/ | COUNTRY/' file
india | COUNTRY
sudan | COUNTRY
japan | COUNTRY
france | COUNTRY
awk
:打印行加上给定的文字。
$ awk '{print $0, "| COUNTRY"}' file
india | COUNTRY
sudan | COUNTRY
japan | COUNTRY
france | COUNTRY
最后,在纯bash
中:逐行阅读并将其与给定文本一起打印。请注意,这是不鼓励的,如Why is using a shell loop to process text considered bad practice?
$ while IFS= read -r line; do echo "$line | COUNTRY"; done < file
india | COUNTRY
sudan | COUNTRY
japan | COUNTRY
france | COUNTRY
答案 1 :(得分:4)
对于更加模糊的方法:
yes '| COUNTRY' | sed $(wc -l < file)q | paste -d ' ' file -
答案 2 :(得分:3)
另一个awk
awk '$0=$0" | COUNTRY"' file
答案 3 :(得分:3)
您也可以将xargs
与echo
一起使用:
< file xargs -d "\n" -rI % echo '% | COUNTRY'
这将使xargs
获取file
的每一行并将其一次传递给指定的echo
命令,替换%
(或任何字符选择)输入行。
†默认情况下,xargs
会将多行输入传递给单个命令,并将它们全部附加到其参数列表中。但是指定-I %
使xargs
将输入放在命令中的指定位置,并且一次只放置一行,根据需要多次运行echo
。