Heim > Artikel > Betrieb und Instandhaltung > So löschen Sie bestimmte Zeilen einer Datei unter Linux
Unter Linux können Sie den Befehl sed verwenden, um bestimmte Zeilen einer angegebenen Datei zu löschen. Führen Sie die Anweisung „sed 'M,Nd' Dateiname“ aus, um den Inhalt aufeinanderfolgender Zeilen von M bis N zu löschen. Führen Sie „sed 'N1d“ aus Die Anweisung „;N2d; N3d;$d' Dateiname“ kann den Inhalt der unterbrochenen Zeilen N1, N2 und N3 löschen. Führen Sie die Anweisung „sed '/spezifisches Zeichen/d' Dateiname“ aus, um Zeilen zu löschen, die bestimmte Zeichen enthalten. Führen Sie „ Die Anweisung „sed '/ ^Spezifisches Zeichen/d' Dateiname“ kann Zeilen löschen, die mit einem bestimmten Zeichen beginnen.
Die Betriebsumgebung dieses Tutorials: Linux7.3-System, Dell G3-Computer.
Unter Linux können Sie den Befehl sed verwenden, um bestimmte Zeilen einer bestimmten Datei zu löschen.
sed ist die Abkürzung für Stream Editor. Es wird für die grundlegende Textkonvertierung in Linux verwendet und ist ein wichtiger Befehl für Dateioperationen. Daher können wir ihn auch zum Löschen von Text verwenden.
Im Folgenden finden Sie einige Anwendungsbeispiele für sed-Befehle, die die meisten Verwendungsszenarien abdecken. Sie helfen Ihnen, den sed-Befehl von flach bis tief zu erlernen, sodass Sie bestimmte Dateizeilen einfach und effizient löschen können.
Zuerst bereiten wir eine Demodatei sed-demo.txt vor und schauen uns den Dateiinhalt an
cat sed-demo.txt
Dann können wir mit dem Befehl sed experimentieren.
1. Eine bestimmte Zeile löschen
Zunächst löschen wir eine bestimmte Zeile, z. B. die erste Zeile und die letzte Zeile, die eigentlich die N-te Zeile ist.
Befehlsformat zum Löschen der N-ten Zeile:
sed 'Nd' file
Versuchen wir, die erste Zeile zu löschen:
sed '1d' sed-demo.txt
Sehr einfach, oder? Hier gibt es keine große Erklärung. Wenn Sie den Inhalt welcher Zeile löschen möchten, müssen Sie nur 1 im Befehl ersetzen und es ist in Ordnung.
Dann stellt sich die Frage: Welche Zahl wird verwendet, um die letzte Zeile darzustellen? Hier ist ein kleiner Tipp für Sie: Sie können das Dollarzeichen $ verwenden, um das Ende darzustellen. Der Befehl zum Löschen der letzten Zeile kann also folgendermaßen geschrieben werden:
sed '$d' sed-demo.txt
2 Bestimmte Zeilen löschen
Der Befehl sed kann aufeinanderfolgende oder diskontinuierliche Zeileninhalte löschen.
Aufeinanderfolgende Zeilen löschen, zum Beispiel Zeilen von 5 bis 7 löschen:
sed '5,7d' sed-demo.txt
Nicht aufeinanderfolgende Zeilen löschen, z. B. die 1., 5., 9. und letzte Zeile löschen:
sed '1d;5d;9d;$d' sed-demo.txt
Auch , es kann auch mit logischem NOT! verwendet werden, z. B. zum Löschen anderer Zeilen außer den Zeilen 3 bis 6:
sed '3,6!d' sed-demo.txt
3. Leerzeilen löschen
sed unterstützt auch das Löschen von Leerzeilen in Dateien, der Befehl lautet wie folgt folgt:
sed '/^$/d' sed-demo.txt
Tipp: Die Ausdrücke innerhalb der beiden Schrägstriche / / spielen hier die Rolle des Textabgleichs. Sie können sich auf die Verwendung regulärer Ausdrücke beziehen. Im Folgenden finden Sie einige häufig verwendete Methoden, um das Lernen aller zu vertiefen.
4. Zeilen löschen, die bestimmte Zeichen enthalten
Angenommen, wir möchten die Zeilen löschen, die das Wort System in der Beispieldatei enthalten, können wir /System/ verwenden, was bedeutet, dass, wenn die Zeichenfolge System erscheint, mit Match fortfahren, Der spezifische Befehl lautet wie folgt:
sed '/System/d' sed-demo.txt
Darüber hinaus können wir auch logische Bedingungen hinzufügen, zum Beispiel den folgenden Befehl:
sed '/System\|Linux/d' sed-demo.txt
Das Symbol |
steht für logisches ODER, die Bedeutung des obigen Befehls Im Text stehen Zeilen mit System oder Linux, die gelöscht werden müssen. 5. Zeilen löschen, die mit bestimmten Zeichen beginnen Wie bereits erwähnt, kann das $-Zeichen als Ende verstanden werden. Gibt es also Zeichen, die den Anfang darstellen können? Die Antwort lautet: Ja, hier können wir das ^-Zeichen verwenden, um den Anfang darzustellen.
Wenn wir also Zeilen löschen möchten, die mit einem bestimmten Zeichen beginnen, beispielsweise um Zeilen zu löschen, die mit R beginnen, können wir den folgenden Befehl verwenden: 那么问题来了,比如我想删除以 R 或者 F 开头的行,那我是不是要执行两次命令呢?如果是有更多岂不是要执行多次命令?这里它有一个简单的写法,你只要把这些字符写在一对中括号 [] 里就可以了: 上面命令的作用是 删除以 R 或者 F 开头的行。 6. 删除特定字符结尾的行 同上面一个道理,删除以某一个字符结尾的行,比方说删除以 m 结尾的行,我们可以这样做: 删除以 x 或 m 结尾的行可以这样写: 7. 删除以大写字母开头的行 这里问题又来了,我想要删除所有以大写字母开头的行呢?按照上面的做法是不是要将 A 到 Z 这 26 个字母都写进 [ ] 里呢?其实我们大可不必这样做,在 A 和 Z 中间加个 - 就可以了: 机智的你看到这里肯定会想到其他类似的用法的了,不妨看看下面是否有你想到的命令吧。 8. 删除包含字母字符的行 9. 删除包含数字的行 另外,通过这个例子,我们可以加上 ^ 和 $ 更好地看到他们之间的区别: 相关推荐:《Linux视频教程》sed '/^R/d' sed-demo-1.txt
sed '/^[RF]/d' sed-demo-1.txt
sed '/m$/d' sed-demo.txt
sed '/[xm]$/d' sed-demo.txt
sed '/^[A-Z]/d' sed-demo-1.txt
sed '/[A-Za-z]/d' sed-demo-1.txt
sed '/[0-9]/d' sed-demo-1.txt
sed '/^[0-9]/d' sed-demo-1.txt
sed '/[0-9]$/d' sed-demo-1.txt
Das obige ist der detaillierte Inhalt vonSo löschen Sie bestimmte Zeilen einer Datei unter Linux. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!