我有一个文件
[root@nmk~]# cat file
abc>
sssd>
were>
Run Code Online (Sandbox Code Playgroud)
我运行awk命令的这两种变体
[root@nmk~]# cat file | awk -F\> ' { print $1}' OFS=','
abc
sssd
were
[root@nmk~]# cat file | awk -F\> ' BEGIN { OFS=","} { print $1}'
abc
sssd
were
[root@nmk~]#
Run Code Online (Sandbox Code Playgroud)
但我的预期输出是
abc,sssd,were
Run Code Online (Sandbox Code Playgroud)
我的命令中缺少什么?
你对FS,OFS,RS和ORS的含义/用途有点困惑.再看一下手册页.我想这就是你要做的事情:
$ awk -F'>' -v ORS=',' '{print $1}' file
abc,sssd,were,$
Run Code Online (Sandbox Code Playgroud)
但这可能更接近你真正想要的输出:
$ awk -F'>' '{rec = rec (NR>1?",":"") $1} END{print rec}' file
abc,sssd,were
Run Code Online (Sandbox Code Playgroud)
或者如果您不想将整个输出缓冲为字符串:
$ awk -F'>' '{printf "%s%s", (NR>1?",":""), $1} END{print ""}' file
abc,sssd,were
Run Code Online (Sandbox Code Playgroud)