Lin*_*que 7 sorting shell awk sed uniq
我有一个像这样的简单文件:
Term1 column2 column3 Term2
column2 column3
Term3 column2 column3 Term2
column2 column3
Term1 column2 column3
Term2 column2 column3
如果我对第一列进行排序并计算术语:
cut -f1 -d ' ' file | sort | uniq -c
Run Code Online (Sandbox Code Playgroud)
结果告诉我这个:
2 学期 1
3
学期2 1 学期3
但我更愿意看到这个:
学期 1 2学期2
3
学期3 1
是否有一种简单的方法可以“更改” uniq 输出来执行此操作,或者我仍然需要将输出通过管道传输到 sed 或 awk 才能获得此结果?
这似乎是一个简单的问题,所以如果之前有人问过这个问题,我深表歉意。
Uniq 没有提供重新排列输出的选项。
您可以使用awk
以下方法执行此操作:
cut -f1 -d ' ' file | sort | uniq -c | awk '{print $2, $1}'
Term1 2
Term2 3
Term3 1
Run Code Online (Sandbox Code Playgroud)
或者使用awk
然后排序(推荐)
$awk '{a[$1]++} END{for (i in a) print i,a[i] }' file | sort -k1
Term1 2
Term2 3
Term3 1
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
680 次 |
最近记录: |