< Le système d'exploitation GNU-Linux

Manipulation des flux et des fichiers textes

awk

La commande awk permet d'effectuer des manipulations sur des fichiers texte (ou un flux redirigé en entrée), dont notamment afficher une colonne particulière. Exemple :

 $ dpkg -l | awk '{print $2}'

Cette commande dit à dpkg que l'on ne veut que la deuxième colonne.

sed

sed est un utilitaire de traitement de données capable d'utiliser les expressions régulières.

Exemples :

  • Pour remplacer toute « chaine1 » avec « chaine2 » dans le fichier « chemin1.txt » :
sed -i 's/chaine1/chaine2/g' chemin1.txt
  • Pour substituer toute « chaine1 » dans le fichier « chemin1.txt » avec « chaine2 » et envoyer le résultat dans le fichier « chemin2.txt » :
 sed 's/chaine1/chaine2/g' chemin1.txt > chemin2.txt
  • Exemple de changement de format de date :
 echo "03/11/2015 23:54:03" | sed -r "s/([0-9]+)\/([0-9]+)\/([0-9]+)/\3-\2-\1/g"

donne :

2015-11-03 23:54:03
  • Si erreur d’édition sous Windows : ^M, convertir avec :
sed -i 's/\r//' chemin1.txt

Pour le stocker en variable :

result=$(echo "chaine_a_tronquer" | sed -r 's/_a_tronquer//g')
echo $result # chaine

Pour que le regex soit interprété, lancer sed -E.

Trouver les commandes et les programmes

which

La commande which permet de connaitre dans quel répertoire se situe une commande (présente dans le PATH) :

 $ which ls
 /bin/ls

updatedb et locate

La commande locate (ou slocate) permet une recherche rapide sur le système de fichier (suite à une indexation réalisée par updatedb).

$ locate maillog
warning: locate: warning: database /var/lib/slocate/slocate.db' is more than 8 days old
/etc/log.d/conf/logfiles/maillog.conf
/var/log/maillog

Lorsque l'indexation a eu lieu il y a plus de 8 jours, la commande locate l'indique par un message.

Pour réindexer le système de fichier :

$ sudo updatedb
ou
# updatedb

Note sur les droits : updatedb utilise par défaut une base d'indexation globale. Il faut donc avoir les droits super-utilisateur pour mettre à jour l'indexation globale.

Divers

file

La commande "file" permet de connaître le type du fichier indiqué en paramètre.

  # file TmDedicatedServer_2006-05-30.tgz
  TmDedicatedServer_2006-05-30.tgz: gzip compressed data, was "fr.22968.0.TmDedicatedServer_20",
  from Unix, last modified: Tue May 30 13:41:35 2006

du

La commande "du" sert à afficher la taille des grandes espaces (partitions de disque et répertoires)

 # du -sh /var/temp

L'option "s" affiche seulement un total pour chaque type d'argument.

L'option "h" permet l'affichage automatique de l'unité adaptée (Ko, Mo, Go...).

df

La commande df affiche l'espace occupé par les systèmes de fichiers.

 # df -h

L'option "h" permet l'affichage automatique de l'unité adaptée (Ko, Mo, Go...).

eval

Ajoute une couche d'évaluation, par exemple pour les variables variables. Ex :

hello="world"
var_name="hello"

echo \$$var_name # $hello
eval echo \$$var_name # world

timeout

Permet de lancer une commande qui se stoppera au plus tard après le temps défini. Ex :

timeout 60 test.sh
Cet article est issu de Wikibooks. Le texte est sous licence Creative Commons - Attribution - Partage dans les Mêmes. Des conditions supplémentaires peuvent s'appliquer aux fichiers multimédias.