Ich verstehe, dass dies sed
ein Befehl zum Bearbeiten von Textdateien ist.
Meiner Ansicht nach -i
bedeutet dies, dass die Operation an der Datei selbst ausgeführt wird. Ist dies korrekt?
Was ist '1d'
?
Ich verstehe, dass dies sed
ein Befehl zum Bearbeiten von Textdateien ist.
Meiner Ansicht nach -i
bedeutet 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 -i
Fä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.orig
und 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 sed
muss das Suffix (hier .back
) an die -i
Option angehängt werden (im selben Argument kein Leerzeichen zwischen -i
und .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 -i
Flagge 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 -i
Flagge kompatibel .
sed '$d' file.txt
Druckt den Inhalt von file.txt
; ohne die letzte Zeile; auf die Standardausgabe.
Auch mit der -i
Flagge kompatibel .
In sed -h
haben:
-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 man
sagte: '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.)
-i
zu sehen, was zuerst passiert, und dann-i
die Datei tatsächlich ändern.