Linux Uniq在比较行时跳过行的中间部分
样本文件 aa\bb\cc\dd\ee\ff\gg\hh\ii\jj aa\bb\cc\dd\ee\ll\gg\hh\ii\jj aa\bb\cc\dd\ee\ff\gg\hh\ii\jj 预期产量 3 aa\bb\cc\dd\ee\*\gg\hh\ii\jj 3 aa\bb\cc\dd\ee\*\gg\hh\ii\jj 讨论 使用Linux Uniq在比较行时跳过行的中间部分,linux,bash,Linux,Bash,样本文件 aa\bb\cc\dd\ee\ff\gg\hh\ii\jj aa\bb\cc\dd\ee\ll\gg\hh\ii\jj aa\bb\cc\dd\ee\ff\gg\hh\ii\jj 预期产量 3 aa\bb\cc\dd\ee\*\gg\hh\ii\jj 3 aa\bb\cc\dd\ee\*\gg\hh\ii\jj 讨论 使用--unique,排序只输出唯一的行,但不计算它们。为此,需要uniq-c。此外,sort输出所有唯一的行,而不仅仅是那些排序为相同值的行 上述解决方案采用了一种
--unique
,排序
只输出唯一的行,但不计算它们。为此,需要uniq-c
。此外,sort
输出所有唯一的行,而不仅仅是那些排序为相同值的行
上述解决方案采用了一种简单的方法,即根据您在输出中的需要,将第六个字段指定给
*
,然后使用标准管道sort | uniq-c
,生成唯一行的计数。您可以在一个awk中完成此操作:
awk 'BEGIN{FS=OFS="\\"} {$6="*"} uniq[$0]++{}
END {for (i in uniq) print uniq[i] "\t" i}' file
3 aa\bb\cc\dd\ee\*\gg\hh\ii\jj
$ awk -F'\' -v OFS='\' '{$6="*"} 1' xslin1 | sort | uniq -c
3 aa\bb\cc\dd\ee\*\gg\hh\ii\jj
awk 'BEGIN{FS=OFS="\\"} {$6="*"} uniq[$0]++{}
END {for (i in uniq) print uniq[i] "\t" i}' file
3 aa\bb\cc\dd\ee\*\gg\hh\ii\jj