Bob*_*Bob 3 bash duplicate awk shell-script
我有一个包含多列的文件,并想确定那些特定列值(第 3-6 列)已重复的文件。
以下代码查找重复项,但我想显示两个实例,而不仅仅是第二个。其他列值(cols 1、2 和 7+)在 2 行之间可能不同,因此我需要查看两个实例。
awk 'seen[$3, $4, $5, $6]++ == 1' filename
Run Code Online (Sandbox Code Playgroud)
uniq 是正确的工具:
uniq -D -f2 file
Run Code Online (Sandbox Code Playgroud)
在哪里:
-D - 打印所有重复项-f2 - 避免比较前 2 个字段编辑:如果不比较字段 7 及以上,则需要awk:
awk 'n=x[$3,$4,$5,$6]{print n"\n"$0;} {x[$3,$4,$5,$6]=$0;}' file
Run Code Online (Sandbox Code Playgroud)
x[]检查数组项(第 3-6 列)。如果已经设置,则运行该部分{...}(在同一语句中,n变量被设置为该数组项的值){...}:打印n变量和当前行$0。x[]下一次迭代的数组项设置为当前行内容,以供以后比较。