Ich habe ein Problem mit der Formatierung der Ausgabe unten.Awk Problem, doppelte Zeilen in mehreren Dateien gleichzeitig.
Ich habe doppelte Zeilen in vielen Dateien SHORT_LIST.a SHORT_LIST.b SHORT_LIST.c, aber es kann viele, viele mehr geben.
Die Zeile "test1" existiert in allen drei Dateien, ebenso die Zeichenfolge "sample".
Die Zeile "Test" existiert in zwei Dateien, aber existiert mehr als einmal in einer der Dateien, ich möchte es nur einmal pro Dateiname ausgeben lassen.
function check_duplicates {
awk 'END {
for (R in rec) {
#split out the SHORT_LIST files
n = split(rec[R], t, "/SHORT_LIST")
#printf n dup[n]
count = 0
if (n > 2)
dup[n] = dup[n] ? dup[n] RS sprintf(R, rec[R]) :
sprintf("\t%-20s %s ", R, rec[R]);
}
for (D in dup) {
((count++))
printf "%s\n \n", d
printf count "). Duplicate record(s) found in the following files: " dup[D]
}
}
{
# build an array named rec (short for record), indexed by
# the content of the current record ($0), concatenating
# the filenames separated by/as values
rec[$0] = rec[$0] ? rec[$0] "\n \t" FILENAME : FILENAME
}' $SITEFILES
}
check_duplicates
Stromausgang unter:
Duplizieren in den folgenden Dateien Datensätze:
1). Doppelte Eintragung (en) in den folgenden Dateien: test1
SHORT_LIST.a SHORT_LIST.b SHORT_LIST.c Probe
2). Duplizieren Datensatz (s) gefunden in den folgenden Dateien: Test
SHORT_LIST.c SHORT_LIST.b SHORT_LIST.b SHORT_LIST.b
3). Doppelte Eintragung (en) in den folgenden Dateien:/path/to/file
SHORT_LIST.a SHORT_LIST.c testa
gewünschte Ausgabe unter:
doppelte Datensätze in den folgenden Dateien:
1). Doppelte Eintragung (en) in den folgenden Dateien: test1
SHORT_LIST.a SHORT_LIST.b SHORT_LIST.c
2). Doppelte Eintragung (en) in den folgenden Dateien: Probe
SHORT_LIST.a SHORT_LIST.b SHORT_LIST.c
3). Duplizieren Datensatz (s) gefunden in den folgenden Dateien: Test
SHORT_LIST.c SHORT_LIST.b
4). Doppelte Eintragung (en) in den folgenden Dateien:/path/to/file
SHORT_LIST.a SHORT_LIST.c
5). Doppelte Eintragung (en) in den folgenden Dateien: testa SHORT_LIST.a SHORT_LIST.c
Irgendwelche Vorschläge wäre sehr dankbar, ich habe Probleme mit diesem Grad an AWK.
Ich bin mir nicht sicher, wie das helfen würde? Ich muss das Duplikat und jede Datei auflisten. –
Ich nehme meinen ursprünglichen Kommentar zur Kenntnis. Vielleicht etwas wie 'sort -o file.srt file; sort file2.srt file2; comm -12 Datei.srt Datei2.srt> Datei1_2.comm; awk '{print "Dupes:" $ 0}' file1_2.comm' würde es erlauben, Standard-Tools zu verwenden, anstatt "das Rad neu zu erfinden" ;-). Sie müssen sich die Zeit nehmen, über 'comm' zu lesen, um festzustellen, ob Sie die Ausgabe für Sie arbeiten lassen können. Viel Glück. – shellter
Die Sache ist, ich übergebe in vorgegebenen Dateien über $ SITEFILES, sie werden zu Beginn in ein größeres Skript übergeben und können nach Namen, Datum, Größe usw. angeordnet werden, so dass ich nicht einfach eine Datei geben kann Namen, weil ich manchmal eine Datei habe, in anderen könnte ich 5000 haben, es hängt davon ab, was die frühere Verarbeitung durchmacht. –