Download Guide de référence Debian - Impala Utopia

Transcript
Chapitre 8. Astuces Debian
tr ’A-Z’ ’a-z’|
sed ’s/^/# /’|
sed ’s/\.ext//g’|
sed -n -e 2p|
head -n 2 -|
tail -n 2 -|
8.6.18
103
#
#
#
#
#
#
convertit les
change chaque
supprime .ext
affiche la 2e
affiche les 2
affiche les 2
majuscules en minuscules
ligne en commentaire
ligne
premières lignes
dernières lignes
Bouts de scripts pour boucler sur chaque fichier
Les façons suivantes de boucler sur chaque fichier correspondant à *.ext assure une gestion
correcte des noms de fichiers atypiques comme ceux ayant des espaces et effectuent la même
chose :
– Boucle shell :
for x in *.ext; do
if test -f "$x"; then
command "$x"
fi
done
– find et xargs :
find . -type f -maxdepth 1 -name ’*.ext’ -print0 | \
xargs -0 -n 1 command
– find avec l’option -exec et une commande :
find . -type f -maxdepth 1 -name ’*.ext’ \
-exec command ’{}’ \;
– find avec l’option -exec et un script shell :
find . -type f -maxdepth 1 -name ’*.ext’ \
-exec sh -c "command ’{}’ && echo ’successful’" \;
8.6.19
Série de courts scripts en Perl
Tous les scripts Awk peuvent être réécrits avec Perl. Par exemple :
awk ’($2=="1957") { print $3 }’|
peut être remplacé par l’une des lignes suivantes au choix :
perl
perl
perl
perl
-ne ’@f=split; if ($f[1] eq "1957") { print "$f[2]\n"}’ |
-ne ’if ((@f=split)[1] eq "1957") { print "$f[2]\n"}’ |
-ne ’@f=split; print $f[2] if ( $f[1]==1957 )’ |
-lane ’print $F[2] if $F[1] eq "1957"’ |
On peut enlever tous les espaces dans les arguments de perl dans la ligne précédente et
prendre avantage de la conversion automatique entre les nombres et les chaînes de caractères
en Perl :