msgbartop
msgbarbottom

01 fév 12 Divers SHELL

Comparer le contenu de 2 répertoires (dir1 & did 2). On peut utiliser rsync mais en fait le plus simple est d’utiliser diff:

diff -rq dir1 dir2
 
-r  --recursive  Recursively compare any subdirectories found
-q  --brief  Output only whether files differ

Tags:

09 déc 08 awk et LC_NUMERIC

Je me suis bien tiré les cheveux avec le awk de mon Mac Intel (sous Leopard):

des opérations mathématiques simples sur des colonnes d’un fichier me donnaient

des résultats complètement aberrants. 

De même je me suis aperçu que:

echo "1.23456" |awk '{print -$1}''
-1

et que

echo "1,23456" |awk '{print -$1}'
-1,23456

 

En cherchant pas mal sur le web j’ai trouvé que la faute venait de la variable LC_NUMERIC.

locale | grep LC_NUMERIC
LC_NUMERIC="fr_FR.UTF-8"

 

En changeant cette variable par export LC_NUMERIC=C  les résultats étaient complètement différents:

 

echo "1.23456" |awk '{print -$1}'
-1.23456

et 

echo "1,23456" |awk '{print -$1}'
-1

Ce qui a résolu mes problèmes d’opérations mathématiques  (j’ai donc exporter LC_NUMERIC=C dans mon .profile).

 

PS: Cela dit en passant la réponse  -1 donnée,  faudrait m’expliquer …

Tags: , ,

15 oct 08 sed

Remplacer « slash » par « antislash slash » (« / » par « \/ »):

echo $PWD | sed -e "s#/#\\\\\/#g" (en ligne de commande sed -e "s#/#\\/#g" est suffisant)

Pour supprimer les espaces en début de ligne avec sed

sed -e "s/^ *//g"

Pour remplacer abs( par fabs( dans tous les fichiers .cc

for i in *.cc; do sed 's/ abs(/  fabs(/g' $i > $i.tmp ;rm $i; mv $i.tmp $i ; done

Pour s’affranchir de la création des fichiers $i.tmp utiliser tee (merci TjB)

sed 's/ abs(/  fabs(/g'  $i | tee > $i

Récupérer une chaîne de caractères entre () .
Cette chaîne peut avoir aussi des espaces (merci beubeu)

echo "qsdjmlsjkld(00 00)" | sed 's/.*(\(.*\)).*/\1/g'

Tags: ,

15 oct 08 awk

Sommer tous les nombres d’une colonne d’un fichier

awk{sum +=$1} END {print sum}’ fichier

fait la somme en valeur absolue

awk '{if ($1 < 0) $1 = -$1} {sum +=$1} END {print sum}' fichier

Sommer les 35000 premiers nombres d’une colonne d’un fichier

awk ' NR < 35000 {sum += $1} END {print sum} ' fichier

Nombre de lignes qui possède la 1ere colonne < 325

awk '$1&lt;325. {print $1}' fichier | wc -l

Sommer les nombres d’une colonne si les valeurs < 325

awk '$1&lt;325 {sum +=$1} END {print sum}' fichier

Imprime les lignes où le mot sampler apparaît

awk '/sampler/{print$0}' fichier

Imprime les lignes où le mot sampler n’apparaît pas

awk '!/sampler/{print$0}' fichier

Compte le nombre de colonne de fichier

awk 'END {print NF}' fichier

Le minimum de la première colonne du fichier test

awk 'min=="" || $1 < min {min=$1} END{ print min}'test

Le maximum de la première colonne du fichier test et à quelle ligne il se situe

awk 'max=="" || $1 > max {max=$1;line=NR} END{ print max,line}'  test

Récupérer une ligne particulière (ici la 17ème ligne)  du fichier TOTO

cat TOTO | awk 'NR == 17 {print;}'

Tags: , , ,