Löschen Sie Zeilen in der Datei, wenn sie das aktuelle Arbeitsverzeichnis enthaltenLinux

Linux verstehen
Guest
 Löschen Sie Zeilen in der Datei, wenn sie das aktuelle Arbeitsverzeichnis enthalten

Post by Guest »

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:

Code: Select all

/dirA/subdir1/somefile
/dirB/subdir2/somefile
/dirB/subdir2/somefile
/dirC/subdir2/somefile
/dirD/subdir1/somefile
Und mein Arbeitsverzeichnis ist:

Code: Select all

/dirB/subdir2/
Dann sollte meine Ausgabe Datei1 an Ort und Stelle bearbeiten, um Folgendes zu ergeben:

Code: Select all

/dirA/subdir1/somefile
/dirC/subdir2/somefile
/dirD/subdir1/somefile
Ich weiß, dass ich Zeilen löschen kann mit:

Code: Select all

sed '/pattern to match/d' file1
Und ich kann pwd wie folgt in sed einspeisen:

Code: Select all

sed 's?#REPLACE-WITH-PATH?'`pwd`'?'
Also dachte ich, ich könnte sie als eine der folgenden kombinieren:

Code: Select all

sed '/'`pwd`'/d' file1
sed '?'`pwd`'?d' file1
sed '#'`pwd`'#d' file1
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.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post