列出第二部分中相同但第一部分中不同的行

列出第二部分中相同但第一部分中不同的行

假设您有一个大文件,其中包含以下格式的行:A、B、C、D(每行有 4 个部分,以逗号分隔)。我需要一个具有共同第四部分的所有行的列表(D 在这些行中是相同的),但其余部分不同(A、B、C)。

例如,重复的行不应出现在输出中,因为即使它们具有相同的 D 部分,但其余部分也相同。

有没有办法做到这一点?

PS 该文件有约 8M 行,因此无法在文本编辑器中直观地执行某些操作。

答案1

 awk -F, -vD='D' '$4==D && !seen[$0]++' data
  • -F,分隔字段,
  • -vD='D'将所需的第四列分配给变量D,更改'D'为所需的第四列值。
  • $4==D && !seen[$0]++如果第四列与变量相同D且之前未见过,则打印行。

如果 后面有空格,,请改用:

 awk -vFS=', *' -vD='D' '$4==D && !seen[$0]++' data

相关内容