Löschen Sie Zeilen in der Datei, wenn sie das aktuelle Arbeitsverzeichnis enthalten
Posted: 06 Jan 2025, 22:10
Das läuft im Wesentlichen auf „Wie kombiniere ich pwd und sed delete (oder alternative)“ hinaus? Wie lösche ich bei einer gegebenen Datei mit einer Liste von Dateipfaden Zeilen, die mein aktuelles Verzeichnis enthalten?
Also, wenn Datei1 Folgendes enthält:
Und mein Arbeitsverzeichnis ist:
Dann sollte meine Ausgabe Datei1 an Ort und Stelle bearbeiten, um Folgendes zu ergeben:
Ich weiß, dass ich Zeilen löschen kann mit:
Und ich kann pwd wie folgt in sed einspeisen:
Also dachte ich, ich könnte sie als eine der folgenden kombinieren:
Die erste Option wird nicht richtig gelesen, da sie die Schrägstriche des Pfads als Teil des sed-Befehls interpretiert. Der zweite erkennt das Fragezeichen nicht. Der dritte läuft, macht aber nichts.
Also, wenn Datei1 Folgendes enthält:
Code: Select all
/dirA/subdir1/somefile
/dirB/subdir2/somefile
/dirB/subdir2/somefile
/dirC/subdir2/somefile
/dirD/subdir1/somefile
Code: Select all
/dirB/subdir2/
Code: Select all
/dirA/subdir1/somefile
/dirC/subdir2/somefile
/dirD/subdir1/somefile
Code: Select all
sed '/pattern to match/d' file1
Code: Select all
sed 's?#REPLACE-WITH-PATH?'`pwd`'?'
Code: Select all
sed '/'`pwd`'/d' file1
sed '?'`pwd`'?d' file1
sed '#'`pwd`'#d' file1