Ответ 1
Вы можете sort
затем uniq
:
$ sort -u input.txt
Или используйте awk
:
$ awk '!a[$0]++' input.txt
Я хочу удалить повторяющиеся записи из текстового файла, например:
kavitha= Tue Feb 20 14:00 19 IST 2012 (duplicate entry)
sree=Tue Jan 20 14:05 19 IST 2012
divya = Tue Jan 20 14:20 19 IST 2012
anusha=Tue Jan 20 14:45 19 IST 2012
kavitha= Tue Feb 20 14:00 19 IST 2012 (duplicate entry)
Можно ли удалить дубликаты записей с помощью Bash script?
Желаемый вывод
kavitha= Tue Feb 20 14:00 19 IST 2012
sree=Tue Jan 20 14:05 19 IST 2012
divya = Tue Jan 20 14:20 19 IST 2012
anusha=Tue Jan 20 14:45 19 IST 2012
Вы можете sort
затем uniq
:
$ sort -u input.txt
Или используйте awk
:
$ awk '!a[$0]++' input.txt
Удаляет повторяющиеся последовательные строки из файла (эмулирует "uniq" ).
Первая строка в наборе повторяющихся строк сохраняется, остальные удаляются.
sed '$!N; /^\(.*\)\n\1$/!P; D'
Perl one-liner похож на решение @kev awk:
perl -ne 'print if ! $a{$_}++' input
Этот вариант удаляет конечные пробелы перед сравнением:
perl -lne 's/\s*$//; print if ! $a{$_}++' input
Этот вариант редактирует файл на месте:
perl -i -ne 'print if ! $a{$_}++' input
Этот вариант редактирует файл на месте и создает резервную копию input.bak
perl -i.bak -ne 'print if ! $a{$_}++' input
Это может сработать для вас:
cat -n file.txt |
sort -u -k2,7 |
sort -n |
sed 's/.*\t/ /;s/\([0-9]\{4\}\).*/\1/'
или это:
awk '{line=substr($0,1,match($0,/[0-9][0-9][0-9][0-9]/)+3);sub(/^/," ",line);if(!dup[line]++)print line}' file.txt