我有一个分号分隔的数据列表:
TR=P561;dir=o;day=sa;TI=16:30;stn=south station;Line=worcester
我需要获取此文件并仅打印出多次出现 TR 值的行。我想第一次出现并列出所有重复项。
谢谢
我有一个分号分隔的数据列表:
TR=P561;dir=o;day=sa;TI=16:30;stn=south station;Line=worcester
我需要获取此文件并仅打印出多次出现 TR 值的行。我想第一次出现并列出所有重复项。
谢谢
如果您愿意对文件进行 2 次传递:
awk '!/TR=/ { next } # Ignore lines that do not set TR
{t=$0; sub( ".*TR=", "", t ); sub( ";.*", "", t ) } # Get TR value
FNR == NR { a[t] +=1 } # Count the number of times this value of TR seen
FNR != NR && a[t] > 1 # print those lines whose TR value is seen more than once
' input-file input-file
这使用了一个常见的 awk 习惯用法,即检查 FNR 以查看我们正在使用的文件。通过将输入文件作为参数传递两次,它成为一种在第一次运行时运行一个命令,在第二次运行时运行不同命令的方式。