Linux 不排序去除重复行和不排序统计重复行
Linux awk About 547 words一般在去除或统计重复行时使用sort及uniq对文件进行排序后uniq操作。
现使用awk命令实现不需要排序即可去重及统计重复行。
示例文本1.txt
aaa
bbb
ccc
xxx
aaa
ccc
zzz
不排序去除重复行
- 逐行将整行内容放入数组
key中 - 对
value进行++运算。++运算符优先级大于! - 对
value++值取反,若value++为假(即++运算前还为0)则取反后为真,输出。注意:value++与++value的区别
此处因为a[$0]++在取反运算前还是0,为假,取反后为真,输出。第二次再有相同key则不输出。
awk '!a[$0]++' 1.txt
输出:
aaa
bbb
ccc
xxx
zzz
不排序统计重复行
- 把所有内容放入
key中并初始化value为1,若出现多次则累加 - END后遍历数组
x - 打印文本内容
i,以及出现的次数x[i]
awk '{x[$0]++}END{for(i in x)print i,x[i]}' 1.txt
输出:
aaa 2
ccc 2
xxx 1
zzz 1
bbb 1
注意
awk中的数组无需初始化,并且任意命名,上述两个例子中的a、x即代表数组名。
Views: 8,052 · Posted: 2019-08-26
————        END        ————
Give me a Star, Thanks:)
https://github.com/fendoudebb/LiteNote扫描下方二维码关注公众号和小程序↓↓↓
Loading...