6 awk
我有一个文件,我想从中检索第一列,并在每个值之间添加逗号.
例:
AAAA 12345 xccvbn
BBBB 43431 fkodks
CCCC 51234 plafad
Run Code Online (Sandbox Code Playgroud)
获得
AAAA,BBBB,CCCC
Run Code Online (Sandbox Code Playgroud)
我决定使用awk,所以我做到了
awk '{ $1=$1","; print $1 }'
Run Code Online (Sandbox Code Playgroud)
问题是:这也在最后一个值上添加一个逗号,这不是我想要实现的,而且我在值之间得到一个空格.
如何删除最后一个元素上的逗号,如何删除空格?花了20分钟看着手册没有运气.
Ed *_*ton 12
$ awk '{printf "%s%s",sep,$1; sep=","} END{print ""}' file
AAAA,BBBB,CCCC
Run Code Online (Sandbox Code Playgroud)
或者如果您愿意:
$ awk '{printf "%s%s",(NR>1?",":""),$1} END{print ""}' file
AAAA,BBBB,CCCC
Run Code Online (Sandbox Code Playgroud)
或者如果你喜欢高尔夫并且不介意它对于大型文件来说效率低下:
$ awk '{r=r s $1;s=","} END{print r}' file
AAAA,BBBB,CCCC
Run Code Online (Sandbox Code Playgroud)
你可以这样做:
awk 'a++{printf ","}{printf "%s", $1}' file
Run Code Online (Sandbox Code Playgroud)
a++ 被解释为条件。在第一行中,其值为 0,因此不添加逗号。
编辑:如果您想要换行符,则必须添加END{printf "\n"}. 如果您在读取文件时遇到问题,您还可以尝试:
cat file | awk 'a++{printf ","}{printf "%s", $1}'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
18719 次 |
| 最近记录: |