Mon fichier factice ressemble à ceci:
C1 C2 C3
1 a snow
2 b snowman
snow c sowman
Je veux obtenir une ligne s'il y a une chaîne snow
dans $ 3. Je peux faire ça comme ça:
awk '($3=="snow" || $3=="snowman") {print}' dummy_file
Mais il devrait y avoir un moyen plus simple.
awk '$3 ~ /snow/ { print }' dummy_file
Également possible en recherchant une chaîne avec la fonction index ():
awk '(index($3, "snow") != 0) {print}' dummy_file
Version plus courte:
awk 'index($3, "snow")' dummy_file
Peut-être que cela aidera
http://www.math.utah.edu/docs/info/gawk_5.html
awk '$3 ~ /snow|snowman/' dummy_file
Imprimer les lignes dont le troisième champ est soit snow
, soit snowman
uniquement:
awk '$3~/^snow(man)?$/' file
sed '/\s*\(\S\+\s\+\)\{2\}\bsnow\(man\)\?\b/!d' file
Contribution:
C1 C2 C3 1 a neige 2 b bonhomme de neige Neige c sowman Neige neige bonhomme de neige
..sortie:
1 a neige 2 b bonhomme de neige