Ich verstehe, dass dies sedein Befehl zum Bearbeiten von Textdateien ist.
Meiner Ansicht nach -ibedeutet dies, dass die Operation an der Datei selbst ausgeführt wird. Ist dies korrekt?
Was ist '1d'?
Ich verstehe, dass dies sedein Befehl zum Bearbeiten von Textdateien ist.
Meiner Ansicht nach -ibedeutet dies, dass die Operation an der Datei selbst ausgeführt wird. Ist dies korrekt?
Was ist '1d'?
Antworten:
In sed:
-i Mit dieser Option wird die Eingabedatei direkt bearbeitet
'1d' Entfernt die erste Zeile der Eingabedatei
Beispiel:
% cat file.txt
foo
bar
% sed -i '1d' file.txt
% cat file.txt
bar
Beachten Sie, dass es in den meisten -iFällen eine gute Idee ist, eine Sicherungskopie zu erstellen, während Sie die Option verwenden, damit Sie die Originaldatei im Falle einer unerwarteten Änderung sichern können .
Zum Beispiel, wenn Sie:
sed -i.orig '1d' file.txt
Die ursprüngliche Datei wird beibehalten file.txt.origund die geänderte Datei wird beibehalten file.txt.
sed '1d' file.txt
Druckt den Inhalt von file.txt; ohne die erste Zeile; auf die Standardausgabe.
sed -i '1d' file.txt # GNU, NetBSD, OpenBSD
sed -i '' '1d' file.txt # FreeBSD, macOS
Druckt den Inhalt von file.txt; ohne die erste Zeile; zurück in file.txt; Überschreiben des Originals.
sed -i.back '1d' file.txt
Erstellt eine Sicherungskopie des Originals (als file.txt.back), bevor Änderungen vorgenommen werden. Mit Ausnahme von FreeBSD sedmuss das Suffix (hier .back) an die -iOption angehängt werden (im selben Argument kein Leerzeichen zwischen -iund .back).
sed '2d' file.txt
Druckt den Inhalt von file.txt; ohne die zweite Zeile; auf die Standardausgabe.
(Wenn Sie eine Zahl angeben, wird die entsprechende Zeile entfernt.)
Auch mit der -iFlagge kompatibel .
sed '1!d' file.txt
Druckt den Inhalt von file.txt; alle außer der ersten Zeile ausschließen; auf die Standardausgabe.
(Mit anderen Worten, nur die erste Zeile wird gedruckt).
Auch mit der -iFlagge kompatibel .
sed '$d' file.txt
Druckt den Inhalt von file.txt; ohne die letzte Zeile; auf die Standardausgabe.
Auch mit der -iFlagge kompatibel .
In sed -hhaben:
-i[SUFFIX], --in-place[=SUFFIX]
edit files in place (makes backup if SUFFIX supplied)
und 'den Vorgang für die Datei selbst ausführen.' absolut ist es.
Und mansagte: 'Sed ist ein Stream-Editor. Ein Stream-Editor wird verwendet, um grundlegende Texttransformationen für einen Eingabestream (eine Datei oder eine Eingabe aus einer Pipeline) durchzuführen. '
als ihre frage,
sed -i '1d' file_name
bedeutet: lösche die erste Zeile in der Datei "file_name"an Ort und Stelle und sichere sie in der Datei. (Genau wie die Datei bearbeiten und die erste Zeile direkt löschen.)
-izu sehen, was zuerst passiert, und dann-idie Datei tatsächlich ändern.