-1

我有一个分号分隔的数据列表:

TR=P561;dir=o;day=sa;TI=16:30;stn=south station;Line=worcester

我需要获取此文件并仅打印出多次出现 TR 值的行。我想第一次出现并列出所有重复项。

谢谢

4

1 回答 1

1

如果您愿意对文件进行 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 以查看我们正在使用的文件。通过将输入文件作为参数传递两次,它成为一种在第一次运行时运行一个命令,在第二次运行时运行不同命令的方式。

于 2012-09-22T20:28:13.413 回答