Emi*_*lio 5 text-processing csv
我试图从一个大的 csv 文件中找到重复的 id,每行只有一个记录,但找到重复的条件将是第一列。 <id>,<value>,<date>
示例.csv
11111111,high,6/3/2019
22222222,high,6/3/2019
33333333,high,6/3/2019
11111111,low,5/3/2019
11111111,medium,7/3/2019
Run Code Online (Sandbox Code Playgroud)
期望的输出:
11111111,high,6/3/2019
11111111,low,5/3/2019
11111111,medium,7/3/2019
Run Code Online (Sandbox Code Playgroud)
输出不需要顺序。
使用 AWK:
awk -F, 'data[$1] && !output[$1] { print data[$1]; output[$1] = 1 }; output[$1]; { data[$1] = $0 }'
Run Code Online (Sandbox Code Playgroud)
这会查看每一行,其行为如下:
如果您的所有 ID 长度都相同(在您的示例中为 8 个字符),您可以使用sort
GNU完成整个操作uniq
:
$ sort file | uniq -Dw 8
11111111,high,6/3/2019
11111111,low,5/3/2019
11111111,medium,7/3/2019
Run Code Online (Sandbox Code Playgroud)
如果它们的长度不同,您仍然可以使用这种方法,但它会变得更复杂一些:
$ tr ',' ' ' < file | sort | rev | uniq -f2 -D | rev | tr ' ' ','
11111111,high,6/3/2019
11111111,low,5/3/2019
11111111,medium,7/3/2019
Run Code Online (Sandbox Code Playgroud)