2016-11-16 1 views
0

У меня есть файл, состоящий из 2-х полей, который содержит длинный список записей, где первые поля является id.the второе поле представляет собой счетчикОпределить повторяющиеся строки в файле, которые имеют 2 поля с помощью командной строки Linux

, что я хочу, чтобы отобразить дублированный ID

пример файла:

tXXXXXXXXXX 12345 
tXXXXXXXXXX 53321 
tXXXXXXXXXXXX 422642 

я знаю логику, как я могу решить эту проблему, что мне нужно сделать итерацию или цикл в файле, но я не знаю, как написать синтаксис команды.

Я буду признателен за любую помощь

ответ

0

Если вы имеете в виду вы просто хотите получить список дубликатов идентификаторов в файле, то это может быть легко достигнуто с помощью вырезания, сортировки и Uniq.

cat <filename> | cut -f1 -d ' ' | sort | uniq -d

Если вы хотите напечатать все строки с одинаковыми идентификаторами на, ниже могут быть использованы:

FILE=/tmp/sdhjkhsfds ; for dupe in $(cat $FILE | cut -f1 -d ' ' | sort | uniq -d); do cat $FILE | grep $dupe | awk '{print $1, $2}'; done

+0

@ Крис Томлинсон, если мне нужно отобразить номер строки дублированного идентификатора? –

+0

@devleb - это номер строки каждого появления дубликата или последнего? Что вы хотите, если дублируются несколько идентификаторов? – c3st7n

+0

@ chris tomlinson необходимо отобразить номер строки каждого экземпляра дубликата –

1

Вы можете использовать это:

perl -ne '++$i;print $i," ",$_ if $line{$_}++' FILENAME 
Смежные вопросы