Puo’ capitare di voler numerare le righe di un file, come si faceva una volta nei listati dei codici di programmazione.
Il primo modo che mi viene in mente è quello di utilizzare un piccolo script awk
awk ‘{print NR, $0}’ nomefile
Ancora piu’ veloce pero’ e’ utilizzare il comando nl
nl nomefile
Se vogliamo numerare anche le righe vuote, come nel caso del awk, allora basta aggiungere l’opzione -ba.
Quando dobbiamo cancellare una quantià notevole di file, anche con estensioni diverse, potrebbe essere comodo escludere in modo semplice dalla lista di file da cancellare alcune determinate estensioni. Purtroppo il comando rm non possiede una opzione exclude, ma possiamo ovviare a questo con un comando del tipo
rm $(ls | grep -v .ext1$ | grep -v .ext2$)
In questo modo non facciamo altro che creare al volo la lista di file da cancellare, escludendo tramite il comando grep e la sua opzione di negazione -v i file il cui nome finisce con .ext1 o con .ext2. Il simbolo $ permette appunto di specificare che i nomi dei file devono finire con la stringa specificata, in questo caso l’estensione dei file. La lista di estensioni da escludere può essere allungata e personalizzata a piacimento seguendo le regole delle regular expressions.
Altro utilissimo comando!!!
Non vi capita tutti i giorni di dover invertire l’ordine delle righe di un file? Bene, se per visualizzare il contenuto di un file nella console usiamo il comando cat, per visualizzarne il contenuto ma in ordine inverso non dobbiamo far altro che usare il comando tac.
Quindi se il file contiene
cat nomefile
Prima riga
Seconda riga
3a riga
il risultato invertito sarà
tac nomefile
3a riga
Seconda riga
Prima riga
Semplice? Semplicissimo!
Forse non tutti sanno che i file di testo creati sotto DOS/Windows hanno come terminatore di riga l’accoppiata di caratteri speciali CR/LF (carriage return/line feed o anche \r\n).
Linux e piu’ in generale i sistemi Unix invece utilizzano in solo carattere LF. Per questo quando si copia un file di testo da una macchina Windows si hanno problemi di visualizzazione.
Per risolvere il problema basta applicare al file il comando dos2unix.
dos2unix nomefile
Tale comando in genere non e’ compreso nelle installazioni base ed e’ contenuto in pacchetti che hanno nome diverso nelle varie distribuzioni linux. Credo pero’ che non dovrebbe mancare nella nostra linux box.
Niente di piu’ facile! Ancora una volta ci viene in aiuto il comando tr.
Per passare da caratteri minuscoli a caratteri maiscoli basta lanciare il comando
echo "sono una stringa tutta in minuscolo" | tr "[:lower:]" "[:upper:]"
per ottenere
SONO UNA STRINGA TUTTA IN MINUSCOLO
anche se non e’ piu’ vero
Naturalmente, per fare la conversione opposta basta scambiare lower e upper.
Facile no?