我有我自己无法解决的文本处理问题,因此我需要更聪明的人的帮助。
我的虚拟文件示例如下所示:
Winter Sally Additional_text
Winter Sally Additional_text
Winter Nicole Additional_text
Spring Lucy Additional_text
Spring Lucy Additional_text
Spring Caroline Additional_text
Spring Caroline Additional_text
Summer Emma Additional_text
Autumn Rita Additional_text
Autumn Rita Additional_text
Autumn Cristina Additional_text
Autumn Lucy's_sister Additional_text
Autumn Lucy's_sister Additional_text
我想:
对于每个第一列项目,计算第二列中有多少个不同的名称。但我只需要计算那些名称:1)至少出现两次和 2)至少有两个不同的名称(它们都至少出现两次)。
对于这样的输出:
Time Counts
Spring 2
Autumn 2
输出解释:
有Winter
两个不同的名字,但Nicole
只出现一次——winter
不报告;
其中Spring
至少有两个不同的名称,并且每个名称至少出现两次 - 报告有多少不同的名称Spring
;只有一个名字 -没有报道
;
在三个不同的名称中,但其中只有两个出现至少两次 - 仅用于和的计数。Summer
Summer
Autumn
Rita
Lucy's_sister
在 awk 和 bash 中 编辑我的解决方案:
cut -d " " -f 1 FILE | sort -u > names
for i in $(cat names)
do
grep ^$i FILE |
awk '{print $2}' |
sort |
uniq -c |
awk -v VAR="$i" '($1>=2) {print VAR}' |
sort |
uniq -c |
awk '($1>=2) {print $2"\t"$1}'
done
这太笨拙和重复了,所以我想知道更简单的方法。