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
$ 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