mardi 16 octobre 2012

bash, lire ligne par ligne

Pour un fichier :



Et encore mieux, sur la sortie d'une commande :)



read, line

lundi 15 octobre 2012

awk, un exemple pour bien débuter et comprendre...





awk n'est pas si compliqué que ça lorsque l'on comprend la philosophie...

La commande se décompose de la manière suivante :

BEGIN { CODE_DEBUT } MATCHAGE { CODE } END { CODE_FIN }

  • CODE_DEBUT est exécuté au début du traitement du fichier ou flux
  • CODE_FIN est exécuté à la fin du traitement du fichier ou flux
  • CODE est exécuté sur les lignes du fichier ou flux matchées par les règles de MATCHAGE

Dans l'exemple ci-dessus,
  • -F ';' indique que le séparateur de champs est le ;
  • les -v permettent de déclarer une variable awk à partir d'une variable bash (pour transmettre les informations)
  • NR correspond au numéro de la ligne traitée (on ignore l'entête du fichier avec le test supérieur ou égal à 2)
  • /;/ correspond aux lignes qui contiennent un ;
  • !/^#/ correspond aux lignes qui ne débutent pas par un dièse

Le programme ci-dessus crée les requêtes à exécuter sur chacune des bases de données pour chacun des enregistrements du fichier file.txt

Comme quoi, on peut démystifier awk ;)

awk, base, for

python, lire et écrire des fichiers xls

Si l'on a des fichiers Excel que l'on souhaite lire ou écrire, on peut utiliser les paquets xlrd (reader) et xlwt (writer).

Voici un petit exemple de ce que l'on peut faire :



La page suivante propose des exemples clairs et rapides pour bien commencer :
http://www.dev-explorer.com/articles/excel-spreadsheets-and-python

vendredi 12 octobre 2012

bash, savoir si stdout fait référence à un terminal

Pour savoir si la sortie standard pointe sur un terminal, on peut utiliser l'opérateur "-t" en bash.



Dans le cas présenté, on utilisera colordiff pour le rendu sinon diff.

En effet, un pipe avec less (sans l'option -R ou la variable LESS définie à -R) afficherait les caractères d’échappement servant à la colorisation des lignes

Cf une page intéressante : ici

sql, gérer les conflits lors des inserts

Lors d'un insert, si la clé primaire existe déjà, il est possible de faire un traitement comme dans l'exemple ci-dessous.



Ici, on tente de peupler la table enveloppesTTS avec des valeurs.

Si l'entrée n'existe pas, on la crée.

Sinon on met à jour un champ de cette table uniquement si sa valeur n'est pas déjà renseigné.

mysql, on duplicate key, insert into, values, select, if, tts