In bestimmten Fällen müssen wir eine bestimmte Zeile aus einer oder mehreren Dateien löschen. Beispielsweise ist mir passiert, dass ich eine ganze Liste von Dateien hatte und Zeile 27 von all diesen löschen muss (Zeile 27 ist die einer ACL , Norm, Regel, Konfiguration), entweder kann ich Datei für Datei bearbeiten oder ich kann mit dem Befehl einfach das erreichen, was ich brauche Durst und ein Bash-Skript (optional).
Aber versuchen wir es mit einer einzelnen Datei.
Wir haben die Datei distros-deb.txt welches dies enthält:
Debian
kubuntu
Archlinux
Lösungen
Minze
Mit anderen Worten, die Datei distros-deb.txt Hier werden wir die Debian-basierten Distributionen einfügen, aber dort sehen wir, dass es in Zeile 3 "archlinux" gibt, eine Distribution, die offensichtlich nichts mit Debian zu tun hat, also müssen wir diese Zeile entfernen. Um Zeile 3 dieser Datei zu entfernen, setzen wir Folgendes:
sed "3d" distros-deb.txt > distros-deb-ok.txt
Diese Zeile zu erklären ist mit etwas einfach durstiges "3d" Wir geben an, dass wir Zeile 3 mit löschen werden distros-deb.txt Wir geben an, an welcher Datei gearbeitet werden soll, dh löschen Sie Zeile 3 dieser Datei. Wenn Sie bis hierher die Eingabetaste drücken , wird angezeigt, was wir möchten, aber im Terminal, also mit > distros-deb-ok.txt Wir geben an, dass das Ergebnis nicht im Terminal angezeigt, sondern in einer Datei mit diesem Namen abgelegt wird.
Was ist einfach?
Wir können auch die Verwendung von vermeiden > distros-deb-ok.txt unter Verwendung eines geeigneten Parameters von Durst, der Parameter -i
Das heißt, falls wir die Zeile aus der Datei entfernen und unter demselben Namen speichern möchten (und nicht in einer anderen Datei), fügen Sie einfach den Parameter hinzu -i :
sed -i "3d" distros-deb.txt
Dadurch wird Zeile 3 aus distros-deb.txt entfernt und gespeichert.
Was ist, wenn ich einen Zeilenbereich möchte, dh Zeile 3, aber auch Zeile 4 und 5 entfernen soll? Um dies zu erreichen, setzen wir den Bereich von 3 bis 5, dh:
sed -i "3,5d" distros-deb.txt
Und es wird mir nur Debian und Kubuntu zeigen
Was ist, wenn ich von Zeile 2 bis zur letzten löschen möchte, wenn ich die Gesamtzahl der Zeilen nicht kenne?
Verwenden Sie einfach das Dollarsymbol - »$
sed -i "2,$d" distros-deb.txt
Wenn Sie von der ersten Zeile bis # 4 entfernen möchten, setzen wir einfach den Wert 1 an den Anfang:
sed -i "1,4d" distros-deb.txt
Dies war alles, ein sehr nützlicher Tipp, wenn Sie Bash-Skripte erstellen möchten, um Aufgaben zu automatisieren, und Sie Zeilen von Konfigurationsdateien ändern und entfernen müssen, um Änderungen vorzunehmen, die wir verwenden können Durst o perl, sowie um zu beseitigen, wissen wir bereits, wie man es mit sed 😉 macht
Grüße
Sehr guter Beitrag 😉
dank
Übrigens, wir haben Ihre E-Mail jetzt erhalten. Ich werde Ihnen antworten
Grüße
Als Hohepriester des Terminals, der Server und der SSH-Verbindungen komme ich zu Ihnen, oh großartiger KZKG ^ Gaara, und ich frage Sie: Wo kann ich ein Tutorial auf der Ebene meiner Unwissenheit erhalten, das es mir ermöglicht, SSH-Verbindungen zwischen zwei Remotecomputern in verschiedenen Netzwerken zum Teilen zu verwenden? Textdateien, PDF, Bild und Ton (mp3)….
🙂
Im Ernst, können Sie mich in dieser Hinsicht leiten? Ich habe zwei Maschinen, eine bei der Arbeit und eine zu Hause, und ich brauche eine SSH-Verbindung zwischen ihnen (denn nach meinem Verständnis ermöglicht SSH die gemeinsame Nutzung von Inhalten zwischen Maschinen, habe ich Recht?
Und wenn ich falsch liege, welche Anwendung empfehlen Sie?
Und wo finde ich diesbezüglich ein grundlegendes Tutorial?
scp
scp user @ machine_address: path user @ machine_address: path.
Gleiche Syntax wie cp, source -> destination.
Du bist aufgetaucht, Mann, du warst verloren.
Guter Tipp!
Interessanter Tipp… xD
Kennen Sie einen, der fett gedruckten Text hervorhebt?
Ich meine, ich habe eine txt-Datei, die ein Wörterbuch ist, mehr als 10000 Zeilen enthält, und ich möchte, dass sie bestimmten Text vor den ":" - Suspendierungspunkten hervorhebt, und es ist zu viel, ihn einzeln auszuführen.
Hallo,
Eine txt-Datei ist einfacher Text, wie der Name schon sagt ... einfach, ohne Formate oder ähnliches. Es tut mir leid, aber ich glaube nicht, dass das, was Sie fragen, getan werden kann, oder? 🙁
Grüße
Eigentlich kann es, aber Sie müssten das Zielformat kennen.
Sport:
echo $ (echo "Robert: Hallo. Hier ändern" | sed 's / \ ./. \\ e [40; 31m /; s / \: /: \\ e [40; 35m /')
es ist eine Frage der Bewältigung.
Die andere Möglichkeit zum Löschen, die verwendet werden kann, ist sed '/' $ 1 '/ d', aber Sie müssen sich der Re sicher sein.
Speichern Sie es anschließend in * .odt
Gibt es nicht einen einfacheren Weg, dies mit LibreOffice zu tun?
Könnten Sie einen Teil einer Zeile löschen und den Rest verlassen?
Angenommen, ich möchte alles vor einem Wort in einer bestimmten Zeile löschen.
Oder löschen Sie alles, was diesem Wort folgt.
Ja, es geht darum, einen regulären Ausdruck zu ziehen (falls erforderlich, Mann sed -r, –regexp-erweitert)
Ausgehend von dem, was ich finde
echo «Robert: Hallo. Hier ändern »| sed 's / Change //'
mit einem genau definierten Muster und mit. (ein Zeichen) und * (mehr als ein Zeichen)
Nach:
echo «Robert: Hallo. Hier ändern »| sed 's / Change. * //'
Vorher:
echo «Robert: Hallo. Hier ändern »| sed 's /. * Change //'
Wenn es darauf ankommt, dass das Wort erscheint
echo «Robert: Hallo. Hier ändern »| sed 's / Change. * / Change /'
oder ausführlicher
in der Zeile mit Robert, was nach Change geht
echo -e «Fritz: Hallo. Hier ändern \ nRobert: Hallo. Hier ändern »| sed '/Robert/s/Cambio.*//'
oder wie am Anfang die zweite Zeile herausnehmen und den Rest verarbeiten
echo -e «Fritz: Hallo. Hier ändern \ nRobert: Hallo. Hier ändern \ nAndere »| sed -e 2d -e 's / Change. * //'
echo -e «Fritz: Hallo. Hier ändern \ nRobert: Hallo. Hier ändern \ nAndere »| sed '2d; s / Change. * //'
Danke, es ist sehr nützlich für mich.
Schöner Artikel, von dem ich mag, wie toll der SysAdmin!
Was wäre unser Leben ohne Sed, Awek, Perl, Grep, Schwanz, Kopf, "Emacs" und so viele andere wichtige Werkzeuge !?
Danke, es war sehr hilfreich.
Hallo, und wie können Sie die Zeilen 1,4 und 10 mit demselben Befehl aus einer Datei löschen?