假设您有一个大文件,其中包含以下格式的行: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