lundi 29 octobre 2012

mac, disque ntfs en écriture

Grrr, apple bloque tout. Le disque Western Digital que je viens d'acheter se monte directement mais n'est visible du finder qu'en lecture seulement !

C'est rageant.

Il y a des solutions tierces telles que paragon-software.com et tuxera.com mais c'est payant :(

J'ai quand même fait quelques explorations et il s'avère qu'on peut bien monter le disque en lecture/écriture sans passer par la caisse :



J'ai lancé une copie de 200Go de données, je verai bien si tout passe.

Note: ça passe sur mon mac mini avec Mac OS 10.6.8 :)

sudo, mount, ntfs, rw

jeudi 18 octobre 2012

python, print sur stderr



print, sys, stderr

mercredi 17 octobre 2012

bash, récupérer la n-ième ligne ou les lignes x à y d'un fichier

On peut utiliser awk avec NR (numéro de ligne tout fichier confondus) ou FNR (numéro de ligne du fichier) :



Ou bien avec sed :



En bonus, 10 astuces awk :
http://www.catonmat.net/blog/ten-awk-tips-tricks-and-pitfalls/

bash, supprimer les lignes vides d'un fichier





où NF indique le nombre de champs. Si ce n'est pas une ligne vide, le nombre de champs est positif et la commande par défaut de awk est d'afficher.
Ce qui équivaut à :







sed, awk, remove empty lines

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

bash, voir autour des occurences avec grep...



Avec l'option :
  • A : affiche les lignes après l'occurence trouvée (after)
  • B : affiche les lignes avant l'occurence trouvée (before)
  • C : affiche les lignes avant et après l'occurence trouvée

grep

jeudi 11 octobre 2012

awk, créer des requêtes SQL depuis un fichier csv

Par exemple :



awk, fs, insert into table

mercredi 10 octobre 2012

bash, récupérer le nombre de colonnes du terminal

Pour centrer :



Ou afficher un séparateur :



tput, printf

python, faire en sorte que stdin/stdout lisent et écrivent en binaire

J'ai écrit un petit programme qui s'inspire de cut en python.

La lecture et l'écriture pouvant se faire sur l'entrée/sortie standard (sources ucut), j'avais des problèmes de "'ascii' codec can't decode byte"...

Pour y remédier, j'ai "transformé" les flux standard (mode texte) en flux binaires de la manière suivante :



python, binary, os, fileno

bash, vérifier si une variable matche une regexp

On peut facilement vérifier si une donnée contenue dans une variable est au bon format.

Dans l'exemple ci-dessous, on vérifie si le numéro de version fourni est correct.



Dans celui-ci si la valeur contient localhost ou itg



Attention, la regexp n'est pas entre quote ni double-quote.

=~, regexp, re