Skip to content

Instantly share code, notes, and snippets.

@colinux
Created October 7, 2011 15:04
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save colinux/1270468 to your computer and use it in GitHub Desktop.
Save colinux/1270468 to your computer and use it in GitHub Desktop.
awk sous linux
$ 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
@jlecour
Copy link

jlecour commented Oct 7, 2011

OK, mais alors comment récupérer la seconde ligne ?

Mais ça serait vachement plus simple d'avoir un moyen de choisir le num de ligne qu'on veut, puis le découpage par " " comme d'hab

@colinux
Copy link
Author

colinux commented Oct 7, 2011

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.

@jlecour
Copy link

jlecour commented Oct 7, 2011

Trop cool. Merci.

@jlecour
Copy link

jlecour commented Oct 9, 2011

Yo, grace à ton aide, j'ai réussi à faire ce que je voulais, au final, ça donne ça : https://gist.github.com/1274052

@colinux
Copy link
Author

colinux commented Oct 9, 2011

cool :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment