使用 linux 命令行识别文件中具有 2 个字段的重复行
Identify duplicate lines in a file that have 2 fields using linux command line
我有一个由 2 个字段组成的文件,其中包含一长串条目,其中第一个字段是 id.the 第二个字段是一个计数器
我想要的是显示重复的 id
文件示例:
tXXXXXXXXXX 12345
tXXXXXXXXXX 53321
tXXXXXXXXXXXX 422642
我知道我如何解决这个问题的逻辑,我需要在文件中进行迭代或循环,但我不知道如何编写命令的语法。
我将不胜感激任何帮助
如果您的意思是您只想要文件中的重复 ID 列表,那么可以使用 cut、sort 和 uniq 轻松实现。
cat <filename> | cut -f1 -d ' ' | sort | uniq -d
如果要打印所有重复ID的行,可以使用下面的方法:
FILE=/tmp/sdhjkhsfds ; for dupe in $(cat $FILE | cut -f1 -d ' ' | sort | uniq -d); do cat $FILE | grep $dupe | awk '{print , }'; done
你可以使用这个:
perl -ne '++$i;print $i," ",$_ if $line{$_}++' FILENAME
我有一个由 2 个字段组成的文件,其中包含一长串条目,其中第一个字段是 id.the 第二个字段是一个计数器
我想要的是显示重复的 id
文件示例:
tXXXXXXXXXX 12345
tXXXXXXXXXX 53321
tXXXXXXXXXXXX 422642
我知道我如何解决这个问题的逻辑,我需要在文件中进行迭代或循环,但我不知道如何编写命令的语法。
我将不胜感激任何帮助
如果您的意思是您只想要文件中的重复 ID 列表,那么可以使用 cut、sort 和 uniq 轻松实现。
cat <filename> | cut -f1 -d ' ' | sort | uniq -d
如果要打印所有重复ID的行,可以使用下面的方法:
FILE=/tmp/sdhjkhsfds ; for dupe in $(cat $FILE | cut -f1 -d ' ' | sort | uniq -d); do cat $FILE | grep $dupe | awk '{print , }'; done
你可以使用这个:
perl -ne '++$i;print $i," ",$_ if $line{$_}++' FILENAME