Heim  >  Artikel  >  Betrieb und Instandhaltung  >  Zusammenfassung der Verwendung des sed-Befehls unter Linux

Zusammenfassung der Verwendung des sed-Befehls unter Linux

藏色散人
藏色散人nach vorne
2021-11-15 15:55:002483Durchsuche

Zusammenfassung der Verwendung des sed-Befehls unter Linux

Sed-Befehl unter Linux:

1 Erste Einführung in sed

Der sed-Editor wird als Stream-Editor bezeichnet und unterscheidet sich von interaktiven Texteditoren wie vim . , das Daten im Datenstrom gemäß Befehlen verarbeitet. Die folgenden Vorgänge werden ausgeführt:

  • Eine Datenzeile nach der anderen aus der Eingabe lesen (diesen Vorgang wiederholen, bis alle Zeilen gelesen wurden)

  • Daten gemäß dem Editorbefehl abgleichen

  • Ändern Daten im Datenfluss entsprechend dem Befehl Data

  • Neue Daten an STDOUT ausgeben (Standardausgabe)

Der Befehl sed kann über die Befehlszeile eingegeben oder aus einer Befehlsdatei gelesen werden.

sed -e script 添加script中指定的命令
sed -f file 添加file中指定的命令

1.1 Definieren Sie den sed-Befehl in der Befehlszeile [Empfohlenes Lernen: Linux-Video-Tutorial]

Schauen wir uns ein einfaches Textersetzungsbeispiel an:

echo "hi,my name is xxx" | sed 's/xxx/kinsomy/'
#修改文件
sed 's/xxx/kinsomy/' data.txt
#执行多个命令 用-e选项,分号隔开
sed 's/xxx/kinsomy/; s/***/hhh/' data.txt

Geben Sie die Echo-Ausgabedaten über die Pipe in sed ein und Verwenden Sie dann den Befehl „Ersetzen“ und ersetzen Sie die übereinstimmenden Daten nach dem ersten Schrägstrich durch die Daten nach dem zweiten Schrägstrich.

Hinweis: sed verarbeitet die Daten in der Textdatei und gibt nur die geänderten Daten an STDOUT aus, ändert jedoch nicht die Daten der Datei selbst.

1.2 Lesebefehl aus Datei

ist in einer Datei script.sed A-Serie definiert von Befehlen zur einfachen Wiederverwendung.

s/*/a
s/x/b
s/-/+

# -f选项指定命令文件
sed -f script.sed data.txt

2 sed-Grundlagen

2.1 Ersetzungs-Tags

Das obige Beispiel echo „hi,my name is xxx“ |. Wenn es jedoch mehrere Übereinstimmungen in einer Datenzeile gibt, können nicht alle ersetzt werden.

echo "hi,my name is xxx, i am xxx" | sed 's/xxx/kinsomy/'
#输出
hi,my name is kinsomy, i am xxx

Zu diesem Zeitpunkt können Sie einige Substitutionsflags verwenden, um den Substitutionsmodus festzulegen. Das Ersatztoken folgt der Ersatzzeichenfolge.

s/pattern/replacement/flags

Zahl, die angibt, bei welcher übereinstimmenden Daten ersetzt wird

echo "hi,my name is xxx, i am xxx" | sed 's/xxx/kinsomy/2'
#输出 第二个xxx被替换成kinsomy
hi,my name is xxx, i am kinsomy

g, die angibt, dass alle übereinstimmenden Daten ersetzt werden

echo "hi,my name is xxx, i am xxx" | sed 's/xxx/kinsomy/g'
#输出 第二个xxx被替换成kinsomy
hi,my name is kinsomy, i am kinsomy

p, die angibt, dass übereinstimmende Zeilen gedruckt werden

echo "hi,my name is xxx, i am xxx" | sed 's/xxx/kinsomy/p'
#输出
hi,my name is kinsomy, i am xxx
hi,my name is kinsomy, i am xxx
w,将替换后输出保存到指定文件
echo "hi,my name is xxx, i am xxx" | sed 's/xxx/kinsomy/w output.txt'

2.3 Leitungsadressierung

Wie oben erwähnt, der Befehl sed Liest Text Zeile für Zeile und gleicht die Daten ab, bis alle Zeilen durchlaufen wurden. Wenn wir zu diesem Zeitpunkt eine bestimmte Zeile bearbeiten möchten, müssen wir die Zeilenadressierung verwenden. Es gibt zwei Formen der Zeilenadressierung:

Die numerische Form stellt die Zeile dar

# 操作单行
$ sed '2s/xxx/***/' data.txt
# 操作一定行区间[2,4]
$ sed '2,4s/xxx/***/' data.txt
# 操作某行开始到最后[2,endline]
$ sed '2,$s/xxx/***/' data.txt

Textmodusfilter

Suchen Sie zuerst den Datensatz von Kinsomy in /etc/passwd und ersetzen Sie dann bash durch csh. Textmusterfilter können in Kombination mit regulären Ausdrücken sehr leistungsstark sein.

sed '/kinsomy/s/bash/csh/' /etc/passwd

2.4 Zeilen löschen

Verwenden Sie den Löschbefehl d, um den Text zu löschen.

# 删除所有文本
sed 'd' data.txt
# 删除单行
sed '2d' data.txt
# 删除行区间[2,3]
sed '2,3d' data.txt
# 删除行区间[2,endline]
sed '2,$d' data.txt
# 删除匹配文本aa的行
sed '/aa/d' data.txt
# 删除两个匹配文本之间的文本 匹配到1和3的行之间的文本全部被删除
sed '/1/,/3/d' data.txt

2.5 Text einfügen und anhängen

Einfügebefehl i fügt eine neue Zeile vor der angegebenen Zeile hinzu

Anhängebefehl a fügt eine neue Zeile nach der angegebenen Zeile hinzu

# 追加
echo "Line 2" | sed 'a\
pipe quote> Line 1'
#插入
echo "Line 2" | sed 'i\
pipe quote> Line 1'

2.6 Zeile ändern

c-Befehl wird zum Ändern einer Zeile verwendet von Daten

# 修改第三行文本
sed '3c\
pipe quote> change line ' data.txt

2.7 Konvertierungsbefehl

Befehlsformat sed 'y/inchar/outchar'

Konvertieren Sie die Zeichen in Inchar nacheinander in Outchar-Zeichen.

echo "This 1 is a test of 1 try." | sed 'y/123/456/'
# 输出
This 4 is a test of 4 try.

Das obige ist der detaillierte Inhalt vonZusammenfassung der Verwendung des sed-Befehls unter Linux. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:juejin.im. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen