On Thu, 16 Feb 2006 12:16:10 +0100, Bruno-L wrote:
$ awk '/^(defun/ { print $2,FILENAME }' ./*.lsp
ouais, dans le fond, awk, il fait tout, mais on est obligé de parler en regex ;-) je vais creuser cette commande. [...]
Ni plus ni moins qu'avec grep. La difference, c'est que par defaut, grep utilise des regexp basiques (sauf avec grep -E) et awk des regexp etendues.
Si tu ne veux pas utiliser de regexp:
awk '$1 == "(defun" {print $2, FILENAME}' ./*.lsp
-- Stephane
Bruno Bonfils
Stephane Chazelas writes:
Ni plus ni moins qu'avec grep. La difference, c'est que par defaut, grep utilise des regexp basiques (sauf avec grep -E) et awk des regexp etendues.
c'est un peu faux de dire ca. Ca dépend si le grep est GNU, ca dépend si le awk est GNU.
Petit exemple :
% grep -E /dev/null grep: option non admise -- E
Je me permet également de vous signaler l'existence d'une liste francophone dédiée à tout ce qui concerne la ligne de commande (shells, awk, sed, etc...) inscription sur http://lists.asyd.net/
Ni plus ni moins qu'avec grep. La difference, c'est que par defaut,
grep utilise des regexp basiques (sauf avec grep -E) et awk des
regexp etendues.
c'est un peu faux de dire ca. Ca dépend si le grep est GNU, ca dépend
si le awk est GNU.
Petit exemple :
% grep -E /dev/null
grep: option non admise -- E
Je me permet également de vous signaler l'existence d'une liste
francophone dédiée à tout ce qui concerne la ligne de commande
(shells, awk, sed, etc...) inscription sur http://lists.asyd.net/
Ni plus ni moins qu'avec grep. La difference, c'est que par defaut, grep utilise des regexp basiques (sauf avec grep -E) et awk des regexp etendues.
c'est un peu faux de dire ca. Ca dépend si le grep est GNU, ca dépend si le awk est GNU.
Petit exemple :
% grep -E /dev/null grep: option non admise -- E
Je me permet également de vous signaler l'existence d'une liste francophone dédiée à tout ce qui concerne la ligne de commande (shells, awk, sed, etc...) inscription sur http://lists.asyd.net/
++
-- http://asyd.net/home/
Marc
Bruno Bonfils wrote:
Ca dépend si le grep est GNU,
% grep -E /dev/null grep: option non admise -- E
Évidemment si tu utilises des versions non standards... Le -E est requis par le standard, et à voir ton adresse je dirais qu'il faut utiliser /usr/xpg4/bin/grep et pas /usr/bin/grep.
Bruno Bonfils wrote:
Ca dépend si le grep est GNU,
% grep -E /dev/null
grep: option non admise -- E
Évidemment si tu utilises des versions non standards... Le -E est requis
par le standard, et à voir ton adresse je dirais qu'il faut utiliser
/usr/xpg4/bin/grep et pas /usr/bin/grep.
Évidemment si tu utilises des versions non standards... Le -E est requis par le standard, et à voir ton adresse je dirais qu'il faut utiliser /usr/xpg4/bin/grep et pas /usr/bin/grep.
Stephane Chazelas
On Thu, 16 Feb 2006 13:56:27 +0100, Bruno Bonfils wrote:
Stephane Chazelas writes:
Ni plus ni moins qu'avec grep. La difference, c'est que par defaut, grep utilise des regexp basiques (sauf avec grep -E) et awk des regexp etendues.
c'est un peu faux de dire ca. Ca dépend si le grep est GNU, ca dépend si le awk est GNU.
Petit exemple :
% grep -E /dev/null grep: option non admise -- E
Non, ca depend de si le grep est POSIX et UNIX conformant.
"-E" est une option Unix (specifiee par la "Single Unix Specification"), si un grep ne la reconnait pas alors, il n'est pas Unix. Si c'est le grep d'un systeme Unix et que c'est celui qui apparait en premier si on a $PATH egal a ce que retourne getconf PATH, alors c'est un bug a leur signaler.
Pareil pour awk. Un awk Unix doit reconnaitre des regexp etendues.
Il est a noter que le awk de GNU ne reconnait les regexp etendues completement que quand il est appelé en mode POSIX:
POSIXLY_CORRECT=1 awk '/a{3}/ {print "3 consecutive a in " $0}'
ou
gawk -W POSIX
-- Stephane
On Thu, 16 Feb 2006 13:56:27 +0100, Bruno Bonfils wrote:
Ni plus ni moins qu'avec grep. La difference, c'est que par defaut,
grep utilise des regexp basiques (sauf avec grep -E) et awk des
regexp etendues.
c'est un peu faux de dire ca. Ca dépend si le grep est GNU, ca dépend
si le awk est GNU.
Petit exemple :
% grep -E /dev/null
grep: option non admise -- E
Non, ca depend de si le grep est POSIX et UNIX conformant.
"-E" est une option Unix (specifiee par la "Single Unix
Specification"), si un grep ne la reconnait pas alors, il n'est
pas Unix. Si c'est le grep d'un systeme Unix et que c'est celui
qui apparait en premier si on a $PATH egal a ce que retourne
getconf PATH, alors c'est un bug a leur signaler.
Pareil pour awk. Un awk Unix doit reconnaitre des regexp
etendues.
Il est a noter que le awk de GNU ne reconnait les regexp
etendues completement que quand il est appelé en mode POSIX:
POSIXLY_CORRECT=1 awk '/a{3}/ {print "3 consecutive a in " $0}'
On Thu, 16 Feb 2006 13:56:27 +0100, Bruno Bonfils wrote:
Stephane Chazelas writes:
Ni plus ni moins qu'avec grep. La difference, c'est que par defaut, grep utilise des regexp basiques (sauf avec grep -E) et awk des regexp etendues.
c'est un peu faux de dire ca. Ca dépend si le grep est GNU, ca dépend si le awk est GNU.
Petit exemple :
% grep -E /dev/null grep: option non admise -- E
Non, ca depend de si le grep est POSIX et UNIX conformant.
"-E" est une option Unix (specifiee par la "Single Unix Specification"), si un grep ne la reconnait pas alors, il n'est pas Unix. Si c'est le grep d'un systeme Unix et que c'est celui qui apparait en premier si on a $PATH egal a ce que retourne getconf PATH, alors c'est un bug a leur signaler.
Pareil pour awk. Un awk Unix doit reconnaitre des regexp etendues.
Il est a noter que le awk de GNU ne reconnait les regexp etendues completement que quand il est appelé en mode POSIX:
POSIXLY_CORRECT=1 awk '/a{3}/ {print "3 consecutive a in " $0}'