awk OFS没有产生预期价值

Nab*_*idu 1 bash awk

我有一个文件

[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)

我的命令中缺少什么?

Ed *_*ton 6

你对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)