use*_*888 30 unix shell awk ksh
我正在进行某些文本处理操作,最终能够获得这样的文件
india
sudan
japan
france
Run Code Online (Sandbox Code Playgroud)
现在我想在上面的文件中添加注释,就像在最终文件中它应该是类似的
india | COUNTRY
sudan | COUNTRY
japan | COUNTRY
france | COUNTRY
Run Code Online (Sandbox Code Playgroud)
像整个文件中的相同评论.我该怎么做呢?
fed*_*qui 59
有很多方法:
sed:用$给定的文本替换(行尾).
$ sed 's/$/ | COUNTRY/' file
india | COUNTRY
sudan | COUNTRY
japan | COUNTRY
france | COUNTRY
Run Code Online (Sandbox Code Playgroud)
awk:打印行加上给定的文本.
$ awk '{print $0, "| COUNTRY"}' file
india | COUNTRY
sudan | COUNTRY
japan | COUNTRY
france | COUNTRY
Run Code Online (Sandbox Code Playgroud)
最后,在pure中bash:逐行读取并将其与给定文本一起打印.请注意,这是不鼓励的,如为什么使用shell循环来处理被视为不良做法的文本?
$ while IFS= read -r line; do echo "$line | COUNTRY"; done < file
india | COUNTRY
sudan | COUNTRY
japan | COUNTRY
france | COUNTRY
Run Code Online (Sandbox Code Playgroud)
其他 awk
awk '$0=$0" | COUNTRY"' file
Run Code Online (Sandbox Code Playgroud)