Angenommen, es gibt eine Spalte mit folgenden numerischen Werten:
Datei1:
1
2
3
3
3
4
4
4
5
6
Ich möchte die Ausgabe:
3
4
Das heißt, nur die wiederholten Zeilen. Gibt es Befehlszeilentools, um dies unter Linux herauszufinden? (Hinweis: Die Werte sind numerisch sortiert).
shell
text-processing
MiNdFrEaK
quelle
quelle
man uniq
.Antworten:
Sie können dafür verwenden
uniq(1)
:Dadurch werden nur die Duplikate ausgedruckt. Die Eingabedatei muss so sortiert werden, dass alle Duplikate aufeinanderfolgend sind (wie es scheint). Wenn dies nicht der Fall ist, führen Sie die Sortierung zuerst durch.
quelle
sort | uniq -c | grep '^\s*3\s' | sed 's/^\s*[0-9]*\s*//'
für Triplikate; Ersetzen Sie "3" durch ein beliebiges N für N-Plikatesort | uniq -c | sed -n 's/^[[:blank:]]*3[[:blank:]]\{1,\}//p'
für DreiergruppenVerwenden
uniq
undawk
:quelle
cat
?uniq -c File1
mit vielen anderen Tools genauso machen können. Das ist wahrscheinlich, was hier los ist.Führen Sie dies aus:
perl -ne 'print if $a{$_}++' filename.txt
quelle
3\n3\n4\n\4n
für die Eingabe File1 was offensichtlich falsch ist.uniq
setzt voraus, dass Ihre Liste sortiert ist. Standardmäßig alphabetisch sortierensort | uniq -d path/to/your/filename
oder
cat fileName | sort | uniq -d path/to/your/filename
quelle