venerdì 11 gennaio 2013

Brevi Esercizi #12. Eliminare linee da un file con sed

Salve!

Ed eccoci a una nuovo puntata di "Brevi Esercizi".

Oggi vedremo come eliminare linee da un file di testo con sed.

Cose semplici semplici eh! :)

Partiamo da questo file. (prova.txt)
1 2 3 4 5 6
2 3 4 5 6 7 
3 4 5 6 7 8
4 5 6 7 8 9 
5 6 7 8 9 0
6 7 8 9 0 1
7 8 9 0 1 2
8 9 0 1 2 3 
9 0 1 2 3 4

Eliminare una sola linea; ad esempio, la quarta:

$ sed '4d' prova.txt

Eliminare un intervallo di linea; ad esempio, dalla sesta alla nona:

$ sed '6,9d' prova.txt

Eliminare una linea determinata, e da questa fino alla fine; ad esempio, dalla linea 5 alla fine (simile all'esempio precedente)

$ sed '5,$d' prova.txt

Eliminare solo l'ultima riga:

$ sed '$d' prova.txt

Eliminare una sequenza regolare di linee dopo aver determinato la prima; Qui in pratica col primo numero si indica la prima linea da eliminare col secondo invece si stabilisce una sequenza regolare.

$ sed '1~2d' prova.txt
Se avessi scritto

$ sed '2~3d' prova.txt

Avremmo avuto

Eliminare due linee non consecutive; ad esempio la prima e l'ottava:

$ sed '1d;8d' prova.txt

Eliminare un intervallo di linee più una linea non consecutiva; ad esempio, dalla terza alla sesta e l'ottava.

$ sed '3,6d;8d' prova.txt

Finora abbiamo semplicemente stampato a video le modifiche di sed. In verità non conviene modificare il file originale.
L'ideale sarebbe redirezionare le modifiche in un nuovo file in modo da preservare quello originale.

es.

$ sed '3,6d;8d' prova.txt > prova1.txt

Se invece, nonostante tutto, si volesse agire direttamente sul file originale, bisognerà utilizzare -i. Dato che gli eventi potrebbero essere nefasti, conviene usare -i.bak.

es.

$ sed -i.bak '1d;8d' prova.txt

In tal modo salveremo una copia del file originale. (prova.txt.bak)

Indice del sequel "Brevi Esercizi" qui.

P.S. d sta per delete, mentre -i sta per modificare il file.

Alla prossima!

Nessun commento:

Posta un commento