Capisco che sed
è un comando per manipolare file di testo.
Dal mio Google, sembra che -i
significhi eseguire l'operazione sul file stesso, è corretto?
Che dire '1d'
?
Capisco che sed
è un comando per manipolare file di testo.
Dal mio Google, sembra che -i
significhi eseguire l'operazione sul file stesso, è corretto?
Che dire '1d'
?
Risposte:
In sed
:
-i
L'opzione modifica il file di input sul posto
'1d'
rimuoverà la prima riga del file di input
Esempio:
% cat file.txt
foo
bar
% sed -i '1d' file.txt
% cat file.txt
bar
Si noti che, la maggior parte delle volte è una buona idea eseguire un backup mentre si utilizza l' -i
opzione in modo da avere il backup del file originale in caso di modifiche impreviste.
Ad esempio, se lo fai:
sed -i.orig '1d' file.txt
il file originale verrà mantenuto come file.txt.orig
e il file modificato sarà file.txt
.
sed '1d' file.txt
Stampa il contenuto di file.txt
; esclusa la prima riga; allo standard output.
sed -i '1d' file.txt # GNU, NetBSD, OpenBSD
sed -i '' '1d' file.txt # FreeBSD, macOS
Stampa il contenuto di file.txt
; esclusa la prima riga; di nuovo in file.txt
; sovrascrivendo l'originale.
sed -i.back '1d' file.txt
Crea un backup dell'originale (come file.txt.back
), prima di apportare modifiche. Ad eccezione di FreeBSD sed
, il suffisso (qui .back
) deve essere collegato -i
all'opzione (nello stesso argomento, nessuno spazio tra -i
e .back
).
sed '2d' file.txt
Stampa il contenuto di file.txt
; esclusa la seconda riga; allo standard output.
(La specifica di qualsiasi numero rimuoverà la riga corrispondente).
Compatibile anche con la -i
bandiera.
sed '1!d' file.txt
Stampa il contenuto di file.txt
; escluso tutto tranne la prima riga; allo standard output.
(In altre parole, viene stampata solo la prima riga).
Compatibile anche con la -i
bandiera.
sed '$d' file.txt
Stampa il contenuto di file.txt
; esclusa l'ultima riga; allo standard output.
Compatibile anche con la -i
bandiera.
In sed -h
avere:
-i[SUFFIX], --in-place[=SUFFIX]
edit files in place (makes backup if SUFFIX supplied)
e 'esegui l'operazione sul file stesso.' assolutamente è.
E man
disse: 'Sed è un editor di stream. Un editor di flussi viene utilizzato per eseguire trasformazioni di testo di base su un flusso di input (un file o input da una pipeline). "
come tua domanda,
sed -i '1d' file_name
significa: elimina la prima riga nel file presente "file_name"
e esegui il backup su file. (proprio come modifica file ed elimina direttamente la prima riga.)
-i
vedere cosa succede prima, quindi utilizzare-i
per modificare effettivamente il file.