MagPI 12 Page 33

De Le French MagPi
Aller à : Navigation, rechercher

Utilisation de Perl

Perl est un langage idéal pour manipuler des chaînes et s'intègre facilement dans des scripts Bash :

#!/bin/bash
while read line; do
  c=$(echo "$line" | perl -ne '@words=split(/\s+/,$_); print STDOUT $words[2];') 
  d=$(echo "$line" | perl -ne '@words=split(/\s+/,$_); print STDOUT $words[3];')
  echo $c $d
done < input_file.txt

Ici, la boucle extérieure est comme celle de l'exemple précédent. "$line" est utilisé pour s'assurer que les espaces sont aussi envoyés à la commande Perl. L'opérateur tube permet de rediriger la sortie de la commande echo vers l'entrée de la commande Perl. L'option -ne permet d'inclure du Perl de cette manière. La variable $_ contient la valeur présente dans $line. Ensuite, la commande split décompose les mots avec un ou plusieurs espaces (\s+) dans le tableau @words. Les second et troisième éléments du tableau correspondent aux colonnes c et d du fichier, où la première colonne est l'élément 0. Comme en C, chaque instruction Perl se termine par un point-virgule. Plus d'informations sur Perl se trouvent sur http://www.perl.org.

Une fois qu'une ligne a été scindée en plusieurs chaînes, l'une d'elles peut servir comme signal pour afficher le reste du fichier :


#!/bin/bash
found=0
while read line; do
  c=$(echo "$line" | perl -ne '@words=split(/\s+/,$_);if($#words > 2) {print STDOUT $words[2]; }')
  if [[ -z $c ]]; then
    continue
  fi
  if [[ $c == "ColumnC_row2" ]]; then
    found=1
  fi
  if [[ $found == 1 ]]; then
    echo $line
  fi
done < input_file.txt

This time the Perl part of the script checks the array size and only uses the third element if there are three or more array elements. The first i f statement ignores zero length c variables, which would be caused by there being less than three words in a given line. Then as soon as found is set to one, the rest of the file is printed to the screen.

Utilisation d'autres programmes

Le défi

Écrire un script Bash contenant un programme Python pour calculer des fonctions mathématiques. Le début :

python <<EOF
import math
from math import *
EOF


La solution sera donnée la prochaine fois.

Outils personnels
Espaces de noms

Variantes
Actions
Navigation
Boîte à outils