如何在Linux中使用awk命令获取“,”分隔的输出

时间:2019-06-24 21:11:51

标签: linux awk

我试图用“,”定界打印awk命令的输出。 尝试使用cut获得相同的输出。

cat File1
dot|is-big|a
dot|is-round|a
dot|is-gray|b
cat|is-big|a
hot|in-summer|a
dot|is-big|a
dot|is-round|b
dot|is-gray|a
cat|is-big|a
hot|in-summer|a

命令已尝试:

$awk 'BEGIN{FS="|"; OFS=","} {print $1,$3}'  file1.csv | sort |  uniq -c

得到的输出:

  2 cat,a
  4 dot,a
  2 dot,b
  2 hot,a

所需的输出:

  2,cat,a
  4,dot,a
  2,dot,b
  2,hot,a

尝试了其他命令:

$cat file1.csv |cut --output-delimiter="|"  -d'|' -f1,3 | sort | uniq -c

1 个答案:

答案 0 :(得分:1)

您需要在运行,后将定界符更改为uniq -c ,因为它添加了第一列。

awk -F'|' '{print $1, $3}' file1.csv | sort | uniq -c | awk 'BEGIN{OFS=","} {$1=$1;print}'

但是,如果您使用的是sort | uniq -c,则无需使用awk,它可以自己进行计数。

awk 'BEGIN{FS="|";OFS=","} {a[$1 OFS $3]++} END{for(k in a) print a[k], k}' file1.csv