Created
October 7, 2011 15:04
-
-
Save colinux/1270468 to your computer and use it in GitHub Desktop.
awk sous linux
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
$ cat gemspec | |
WARNING: no homepage specified | |
Successfully built RubyGem | |
Name: project | |
Version: 2.7.5 | |
File: project-2.7.5.gem | |
# On veut récupérer "2.7.5" et "project-2.7.5.gem": | |
# -F": " : fixe ": " comme séparateur de champ | |
# et on ne récupère que les champs qui contiennent des nombres | |
$ cat gemspec | awk -F": " '{ if ($NF ~ /[0-9]+/) { print $NF; } }' | |
2.7.5 | |
project-2.7.5.gem | |
# On ne veut que le numéro de version pour l'assigner dans une variable: on adapte juste la regex | |
$ V=`cat gemspec | awk -F": " '{ if ($NF ~ /^[0-9\.]+$/) { print $NF; } }'` | |
$ echo $V | |
2.7.5 |
Trop cool. Merci.
Yo, grace à ton aide, j'ai réussi à faire ce que je voulais, au final, ça donne ça : https://gist.github.com/1274052
cool :)
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Je pense que si tu veux 2 variables (une pour chaque ligne), il faut de toute façon faire 2 appels, en adaptant juste la regex.
Et du coup quitte à faire 2 appels, on peut faire plus simple:
$ cat gemspec | awk '{ if ($0 ~ /Version/) { print $2; } }'
2.7.5
Avec les numéros de lignes ça marche aussi mais c'est ptet moins fiable sur la durée si ya un changement dans la sortie:
$ cat gemspec | awk '{ if (NR == 4) { print $2; } }'
2.7.5
$ cat gemspec | awk '{ if (NR == 5) { print $2; } }'
project-2.7.5.gem
Au passage je viens de réaliser qu'il n'y a pas besoin de changer le field separator, vu que par défaut c'est l'espace et que dans ton cas ça suffit.