domenica 4 ottobre 2015

Leggi fin dove ti dico io [sed, awk]

Immaginiamo di avere un testo e, individuata una parola, vogliamo che sed o awk legga (e ci restituisca in output) fino a quella parola, compresa o esclusa. O meglio, fino a quella riga in cui è compresa quella parola (sarebbe meglio dire stringa, eh).

Testo di esempio. [Poesia.txt]

La donzelletta vien dalla campagna,
In sul calar del sole,
Col suo fascio dell’erba; e reca in mano
Un mazzolin di rose e di viole,
Onde, siccome suole,
Ornare ella si appresta
Dimani, al dì di festa, il petto e il crine.
Siede con le vicine
Su la scala a filar la vecchierella
Incontro là dove si perde il giorno;
E novellando vien del suo buon tempo,
Quando ai dì della festa ella si ornava,
Ed ancor sana e snella
Solea danzar la sera intra di quei
Ch’ebbe compagni dell’età più bella.


Primo esempio.

Voglio che awk legga fino alla stringa "crine"

$ awk '{print} /crine/ {exit}' Poesia.txt


 Per ottenere lo stesso risultato con sed, avremmo dovuto scrivere:

$ sed '/crine/q' Poesia.txt


Secondo esempio.

Voglio che awk legga fino alla stringa "crine", escludendo, però, la riga che la contiene.

$ awk '/crine/ {exit} {print}' Poesia.txt


 Per ottenere lo stesso risultato con sed, avremmo dovuto scrivere:

 $ sed '/crine/Q' Poesia.txt

Alla prossima! 


Nessun commento:

Posta un commento