11.07.2015 Views

Amministrare GNU/Linux - Cia

Amministrare GNU/Linux - Cia

Amministrare GNU/Linux - Cia

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

2.2. I COMANDI DEI FILE 87filtraggio redirigendo l’output del comando. L’opzione -n è fornita per permettere (all’interno deivari comandi) di eseguire una stampa in uscita solo quando lo si ritiene opportuno (ed ottenerepertanto un risultato diverso).La potenza di sed sta nella grande flessibilità dei comandi che possono essere dati tramitel’espressione di editing, alcuni di questi infatti utilizzano le espressioni regolari (le cui basi sisono illustrate in sez. 2.2.2) per individuare dei pattern nel file ed operare su di essi compiendosostituzioni, cancellazioni, ecc.Le espressioni di editing sono normalmente divise in indirizzi e comandi. Un indirizzo esprimel’insieme delle righe del file originario a cui si applica il successivo comando. Un singolo indirizzoindica la riga cui si applica il comando, con due indirizzi separati da una virgola si indica unintervallo di righe, mentre quando, come nella maggior parte dei casi, non si specifica nessunindirizzo, il comando si applica a tutte le righe del file. Infine se ad un indirizzo si fa seguire(prima del comando) il carattere “!” la selezione delle righe viene invertita.In genere un indirizzo viene specificato tramite il numero della relativa riga (ad esempio“10” indica la riga 10, “5,15” indica le righe dalla quinta alla quindicesima e “3,7!” tutte lerighe escluse quelle nell’intervallo fra la terza e la settima. Sono però possibili delle selezioni piùcomplesse, come “$” che indica l’ultima riga del file, o “/regexp/” che seleziona le righe corrispondentiad una espressione regolare; un elenco delle principali forme con cui si può specificareun indirizzo è riportato in tab. 2.16.EspressioneSignificatoNselezione la N-sima riga.N,M seleziona le righe dalla N alla M.N~M selezione le righe a partire dalla N-sima a passi di M./regexp/ seleziona le righe che corrispondono all’espressioneregolare /regexp/.$ seleziona l’ultima riga del file.N,+Mseleziona M righe a partire dalla N-sima.Tabella 2.16: Espressioni per specificare un indirizzo al comando sed.Una volta specificato l’indirizzo la seconda parte di una espressione di editing è compostada un comando. Un comando viene sempre introdotto da un carattere di controllo, seguito daeventuali parametri. I comandi possono essere ripetuti e raggruppati con l’uso delle parentesigraffe, ed in genere vengono scritti uno per riga e possono essere letti da un file con l’opzione -f.Per capire l’azione dei vari comandi occorre capire come sed effettua la manipolazione deidati e dove questi sono mantenuti. Quando una riga viene letta da un file essa viene postanel cosiddetto pattern space dove vengono effettuate tutte le operazioni e la manipolazione delcontenuto: è cioè nel pattern space che si troveranno le modifiche eseguite al contenuto originaledalle operazioni di sed. Il comando prevede inoltre anche la presenza di un altro spazio lohold space, inizialmente vuoto, dove è possibile inviare dati a partire dal pattern space, chepossono essere ripresi successivamente; questo permette operazioni complesse in cui i dati sonoopportunamente spostati e ricombinati all’interno di detti spazi.L’elenco dei comandi più comuni è riportato in tab. 2.17; ma sed ne supporta molti altri.Un elenco completo con una descrizione sommaria si può trovare nella pagina di manuale, ma ladocumentazione completa, fornita anche di parecchi esempi, è disponibile solo nelle pagine info,accessibili con info sed.Il più importante ed utilizzato (e l’unico che tratteremo esplicitamente) dei comandi di sedè “s” che permette di sostituire una sezione di testo nel pattern space con un’altra. La sintassidel comando è nella forma s/ricerca/sostituzione/ ed in questa forma rimpiazza (all’internodel pattern space) la prima occorrenza della stringa ricerca con la stringa sostituzione.La potenza del comando sta nel fatto che la stringa di ricerca viene specificata come espressioneregolare, pertanto diventa possibile fare selezioni estremamente complesse; inoltre si possono

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!