GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Mehrere Muster gleichzeitig mit dem Sed-Befehl verwenden

Hier ist eine Frage von einem unserer regelmäßigen Leser, Herrn Manish. Seine Frage ist, wie man mehrere Muster gleichzeitig mit dem Sed-Befehl in Linux für Lösch- oder Ersetzungsoperationen verwenden kann.

Stellen Sie sich eine Beispieldatei vor, die den folgenden Text enthält. (Ich verwende dasselbe Beispiel, nach dem der Leser gefragt hat).

SLURM_CLUSTER_NAME = test
SLURM_JOB_ID = 525595
SLURM_JOB_NAME = test1
SLURM_JOB_USER = test
SLURM_JOB_NODELIST = cn01
SLURM_JOB_UID = 5016
SLURM_JOB_PARTITION = standard-low
SLURM_SUBMIT_DIR = /home/test
SLURM_TASK_PID = 108983
SLURM_CPUS_ON_NODE = 1
SLURM_NTASKS = 
SLURM_TASK_PID = 108983

Jetzt will der Leser einen einzelnen Sed Befehl zum Löschen der Zeilen, die dem Muster entsprechen – SLURM_JOB_USER &SLURM_SUBMIT_DIR aus der Datei. Wie machst du das? Los geht's.

Linienvergleichsmuster löschen und mit Sed drucken

Syntax:

$ set '/PATTERN/d' filename
$ sed '/SLURM_JOB_USER/d' test.txt

Der obige Befehl löscht die Zeile, die dem Muster ‘SLURM_JOB_USER entspricht ‘ und gibt die Ausgabe auf der Standardausgabe aus.

Lösche das Zeilenabgleichsmuster und ändere die Datei mit Sed

Syntax:

$ set -i '/PATTERN/d' filename

Das '-i' Option ändert die Datei.

$ sed -i '/SLURM_JOB_USER/d' test.txt

Mehrere Muster gleichzeitig mit Sed verwenden

Was ist, wenn Sie mit einem einzigen Sed-Befehl mehrere Zeilen löschen möchten, die mehreren Mustern entsprechen? Los geht's,

Syntax:

$ set -i '/PATTERN1/d;/PATTERN2/d' filename
$  sed -i '/SLURM_JOB_USER/d;/SLURM_SUBMIT_DIR/d' test.txt

Der obige Befehl löscht die Zeilen, die SLURM_JOB_USER enthalten und SLURM_SUBMIT_DIR Muster und speichern Sie die Datei. Beachten Sie das Semikolon (;) für die Eingabe mehrerer Muster innerhalb eines einzigen Befehls.

Muster ersetzen und mit Sed ausdrucken

Syntax:

$ sed 's/PATTERN/REPLACE_STRING/g' test.txt
$ sed 's/SLURM_JOB_USER/REPLACE1/g' test.txt

'g' stellt global  dar – es ersetzt alle Instanzen des Musters in jeder Zeile, anstatt nur das erste (was das Standardverhalten ist)

Muster ersetzen und die Datei mit Sed ändern

$ sed -i 's/SLURM_JOB_USER/REPLACE1/g' test.txt

Option '-i' ändert die Datei.

Mit Sed mehrere Muster gleichzeitig verwenden

$ sed -i 's/SLURM_JOB_USER/REPLACE1/g;s/SLURM_SUBMIT_DIR/REPLACE2/g' test.txt

Achten Sie auf das Semikolon (;), um weitere Muster innerhalb des einzelnen Befehls hinzuzufügen.

Liebe es? Teilen Sie uns in den Kommentaren unten mit, wenn Sie eine Frage haben, und wir werden versuchen, sie hier zu behandeln.

Referenz


Linux
  1. Ersetzen Sie intelligente Anführungszeichen durch den Linux-Befehl sed

  2. Wie führe ich Grep mit mehreren und Mustern aus?

  3. Verwendung von –exclude mit dem Du-Befehl?

  4. Datei nach Verwendung des Sed-Befehls speichern?

  5. Verwenden von sed zum Teilen einer Zeichenfolge mit einem Trennzeichen

Verwalten Sie die Netzwerksicherheit mit Firewalld über Befehlszeilen

So führen Sie mehrere Linux-Befehle gleichzeitig im Linux-Terminal aus

Erste Schritte mit dem SED-Befehl [Leitfaden für Anfänger]

Planen Sie Jobs in Linux mit dem Befehl 'at'

Verwendung des Linux-Befehls sed mit Beispielen

Verwenden des tr-Befehls in Linux, um mit Charakteren zu spielen