Estrarre tutte le chiavi GPG pubbliche da un file
Supponiamo di avere un file di nome “file-con-chiavi-gpg” e di volerle estrarre eliminando ogni altra riga presente nel file.
perl -ne 'print if /-----BEGIN PGP PUBLIC KEY BLOCK-----/../-----END PGP PUBLIC KEY BLOCK-----/' file-con-chiavi-gpg
Naturalmente estrapolando la logica potremmo voler stampare tutte le righe comprese tra due regexp
perl -ne 'print if /regex1/../regex2/' file.txt
Vedi tutte le FAQsAggiungere 1 a tutti i numeri presenti su una stringa
$str =~ s/(\d+)/$1+1/ge
Vedi tutte le FAQsNumerare un file di testo
Supponiamo di avere un file di testo (prova.txt) che vogliamo numerare. Possiamo utilizzare:
perl -pe '$_ = "$. $_"' prova.txt
Se si vuole simulare l’output di cat -n prova.txt basta usare:
perl -ne 'printf "% 5d %s", $., $_' prova.tx
Per togliere la numerazione possiamo utilizzare:
perl -pe 's/^\s*\d+\s*//' prova.txt
Vedi tutte le FAQsEncode/decode un file o stringa in Mime Base64
Supponiamo aver una stringa “Prova encode” ed un file “prova.txt” da voler encodare in Mime base64. Per risolvere il problema possiamo semplicemente lanciare la riga di comando:
perl -MMIME::Base64 -e 'print encode_base64("Prova encode")'
perl -MMIME::Base64 -0777 -ne 'print encode_base64($_)' prova.txt
Per l’operazione inversa basta fare:
perl -MMIME::Base64 -le 'print decode_base64("stringa in base64")'
perl -MMIME::Base64 -ne 'print decode_base64($_)' prova.base64
Vedi tutte le FAQs
Stampare solo la linea 25 di un file
Supponiamo di voler stampare solamente una singola linea di un file, che per comodità indichiamo con la linea 25
perl -ne '$. == 25 && print && exit' file.txt
Naturalmente se vogliamo stampare anche le righe 31 e 57
perl -ne '($. == 25 || $. == 31 || $. == 57) && print' file.txt
Mentre se volessimo tutte le righe tra la 25 e la 57 comprese
perl -ne 'print if $. >= 25 && $. <= 57' file.txt
Vedi tutte le FAQsRinominare un gruppo di file in base ad una regexpr
Supponiamo di voler rinominare il nome di un gruppo di file che hanno il seguente template:
file1_tmp.sh
file2_tmp.sh
...
file99_tmp.sh
e supponiamo di voler togliere la parte centrale ‘_tmp’ in tutti i file. Possiamo utilizzare il comando “rename” o “prename”:
rename 's/_tmp//' *.sh
Vedi tutte le FAQs
Come contare il numero di volte che un singolo carattere è presente in ogni riga di un file
Supponiamo di avere un file di testo di nome “file.csv” e di voler contare per ogni riga il numero di volte che si presenta un carattere, ad esempio il carattere “,“.
Supponiamo che il risultato sia l’output dello stesso file “file.csv” preceduto in ogni riga dal conteggio stesso.
Basta semplicemente la seguente singola riga perl:
perl -ne '@c=$_=~/;/g; print scalar(@c)." ". $_;' file.csv
Vedi tutte le FAQs