我的数据结构通常如下:
name letter surname
这是一个真实世界的例子:
Jake A Lincoln
Phil B Baker
Paul B Howard
John B Baker
...
我想使用awk检查surname列中的相同字符串。这就是我想出的:
awk 'NF==3{sur=$3;next} NF==3{newsur=$3;next} if ($sur == $newsur){ print $1,$2,$3 }'
但我真的认为它不会起作用。
答案 0 :(得分:1)
试试这个:
$ awk '$3 in a{print a[$3]":"$0;next}{a[$3]=$0}' file
Phil B Baker:John B Baker
如果您有许多不同顺序的名称,最好将它们存储在数组中并最终打印出来。
awk '($3 in t){ln[$3]=t[$3]":"$0;next}{t[$3]=$0}END{for(s in ln) print ln[s]}' file
要存储名称并打印姓氏一次,请执行以下操作:
$ awk '$3 in t{ln[$3]=t[$3]":"$1;next}{t[$3]=$1}END{for(s in ln) print ln[s],"("s")"}' file
Phil:John (Baker)