Cosa fa sed -i '1d'?


28

Capisco che sedè un comando per manipolare file di testo.

Dal mio Google, sembra che -isignifichi eseguire l'operazione sul file stesso, è corretto?

Che dire '1d'?

Risposte:


43

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' -iopzione 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.orige il file modificato sarà file.txt.


4
Puoi anche fare una "corsa a secco" senza -ivedere cosa succede prima, quindi utilizzare -iper modificare effettivamente il file.
Baard Kopperud,

15

1. a)

sed '1d' file.txt

Stampa il contenuto di file.txt; esclusa la prima riga; allo standard output.


2. a)

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.


2. b)

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 -iall'opzione (nello stesso argomento, nessuno spazio tra -ie .back).


3. a)

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 -ibandiera.


3. b)

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 -ibandiera.


3. c)

sed '$d' file.txt

Stampa il contenuto di file.txt; esclusa l'ultima riga; allo standard output.

Compatibile anche con la -ibandiera.


Cordiali saluti: la versione BSD (cioè macOS de facto standard) in genere non coopererà a meno che non si crei un backup (2. b) o si usi il metodo di bypass del backup (2. c). La versione GNU non ti chiederà questo. Modificherà in modo distruttivo e sovrascriverà i file esistenti senza esitazione.
voci

4

In sed -havere:

  -i[SUFFIX], --in-place[=SUFFIX]
             edit files in place (makes backup if SUFFIX supplied)

e 'esegui l'operazione sul file stesso.' assolutamente è.

E mandisse: '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.)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.