Lister dans le répertoire toto/ tous les fichiers crées il y a -40 minutes
find toto/ -type f -mmin -40 -exec ls -rtla {} \;
Une fois qu’on aura vérifié que ça donne le bon résultat, on pourra effacer les fichiers en question remplacer le
-exec ls {}
par
-exec rm {}
Tags: find
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
Faire un test de modulo (tous les 1000)
if [ $(($i% 1000)) -eq 0 ] then echo "$i)" fi
Tags: diff
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: awk, LC_NUMERIC, Leopard
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'
Changer dans src tout les fichiers commençant par Eli en fichiers commençant par Capi
for i in `ls src/*`;do mv $i `echo $i | sed "s/Eli/Capi/g"` ;done
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<325. {print $1}' fichier | wc -l
Sommer les nombres d’une colonne si les valeurs < 325
awk '$1<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;}'
Imprimer toutes les colonnes d’un fichier sauf la dernière
awk '{$NF=""; print $0}' TOTO.txt
et
awk '{$(NF-1)=""; print $0}' ff300_1M.txt
pour supprimer l’avant dernière colonne
Ecrire sur une même ligne (au lieu de passer à la ligne pour chaque valeur) le résultat d’un print d’une colonne
awk '{ printf("%s,",$2) } END {printf("\n")}' toto.txt