Angenommen, ich Datei data
genannt haben:Wie lösche Zeilen, die eine Zeichenfolge aus einer anderen Datei enthalten?
ID_11 0.3 0.5
ID_13 0.5 0.5
ID_14 0.6 0.3
ID_15 0.7 0.8
ID_16 0.9 1.0
Ich habe auch eine andere Datei ID
:
ID_11
ID_16
Ich möchte löschen Sie die Zeilen in data
, wo die erste Spalte der Zeile entspricht ID
. Der gewünschte Ausgang ist wie folgt:
ID_13 0.5 0.5
ID_14 0.6 0.3
ID_15 0.7 0.8
Wie geht das?
Ich habe einen Befehl online gefunden. Aber ich weiß nicht, ob es richtig ist oder nicht. Kann jemand eine Erklärung geben?
awk 'FNR==NR{a[$1];next} !($1 in a)' ID file
Lesen Sie zuerst die ID-Datei und verwenden Sie die IDs als Schlüssel eines Arrays. Lesen Sie dann die Datendatei, prüfen Sie, ob '$ 1' nicht im Array ist, und drucken Sie die Zeile. – Barmar
@ 81235 - Was hast du schon probiert? – Soren
Sie können auch 'grep -v -f ID data' verwenden. – Barmar