Comment fait-on pour n'afficher qu'un mot/ensemble de
mots/caractère/ens. de caractères qui se trouve dans une chaine
(éventuellement dans un fichier texte) ?
Du genre :
- le fichier texte contient, sur la 1e ligne :
salut jean dupont
hello fabrice durand
- je veux récupérer seulement : "jean" ou bien seulement : "s" (1e
lettre du 1er mot), ou bien seulement "salut dupont", ou encore "hello"
(1e mot de la ligne 2), etc.
comment faire ?
Merci d'avance pour vos suggestions.
Comment faire ?
Comment fait-on pour n'afficher qu'un mot/ensemble de mots/caractère/ens. de caractères qui se trouve dans une chaine (éventuellement dans un fichier texte) ?
Du genre :
- le fichier texte contient, sur la 1e ligne :
salut jean dupont hello fabrice durand
- je veux récupérer seulement : "jean" ou bien seulement : "s" (1e lettre du 1er mot), ou bien seulement "salut dupont", ou encore "hello" (1e mot de la ligne 2), etc.
comment faire ?
Il y a plein de façon de faire, mais awk parait assez indiqué:
seulement : "jean" : awk 'END{print "jean";}' < fichier.txt seulement : "s" : awk 'END{print "s";}' < fichier.txt seulement : "salut dupont" : awk 'END{print "salut dupont";}' < fichier.txt 1er lettre du 1er mot : awk '{print substr($1,1,1);}' < fichier.txt 1e mot de la ligne 2 : awk '{IF(NR=2){print $1}}' < fichier.txt
Bien entendu, le principal problème est celui de bien spécifier ce qu'on veut.
Le mieux serait d'apprendre à se servir de quelques outils de base:
man sh man bash man sed man awk cd /bin ; for f in * ; do man $f ; done
-- __Pascal_Bourguignon__ . * * . * .* . http://www.informatimago.com/ . * . .* * . . / () . * Living free in Alaska or in Siberia, a . . / . . * . grizzli's life expectancy is 35 years, .*. / * . . but no more than 8 years in captivity. . /* o . http://www.theadvocates.org/ * '''||''' . SCO Spam-magnet: ******************
Comment fait-on pour n'afficher qu'un mot/ensemble de
mots/caractère/ens. de caractères qui se trouve dans une chaine
(éventuellement dans un fichier texte) ?
Du genre :
- le fichier texte contient, sur la 1e ligne :
salut jean dupont
hello fabrice durand
- je veux récupérer seulement : "jean" ou bien seulement : "s" (1e
lettre du 1er mot), ou bien seulement "salut dupont", ou encore "hello"
(1e mot de la ligne 2), etc.
comment faire ?
Il y a plein de façon de faire, mais awk parait assez indiqué:
seulement : "jean" : awk 'END{print "jean";}' < fichier.txt
seulement : "s" : awk 'END{print "s";}' < fichier.txt
seulement : "salut dupont" : awk 'END{print "salut dupont";}' < fichier.txt
1er lettre du 1er mot : awk '{print substr($1,1,1);}' < fichier.txt
1e mot de la ligne 2 : awk '{IF(NR=2){print $1}}' < fichier.txt
Bien entendu, le principal problème est celui de bien spécifier ce
qu'on veut.
Le mieux serait d'apprendre à se servir de quelques outils de base:
man sh
man bash
man sed
man awk
cd /bin ; for f in * ; do man $f ; done
--
__Pascal_Bourguignon__ . * * . * .* .
http://www.informatimago.com/ . * . .*
* . . / () . *
Living free in Alaska or in Siberia, a . . / . . * .
grizzli's life expectancy is 35 years, .*. / * . .
but no more than 8 years in captivity. . /* o .
http://www.theadvocates.org/ * '''||''' .
SCO Spam-magnet: postmaster@sco.com ******************
Comment fait-on pour n'afficher qu'un mot/ensemble de mots/caractère/ens. de caractères qui se trouve dans une chaine (éventuellement dans un fichier texte) ?
Du genre :
- le fichier texte contient, sur la 1e ligne :
salut jean dupont hello fabrice durand
- je veux récupérer seulement : "jean" ou bien seulement : "s" (1e lettre du 1er mot), ou bien seulement "salut dupont", ou encore "hello" (1e mot de la ligne 2), etc.
comment faire ?
Il y a plein de façon de faire, mais awk parait assez indiqué:
seulement : "jean" : awk 'END{print "jean";}' < fichier.txt seulement : "s" : awk 'END{print "s";}' < fichier.txt seulement : "salut dupont" : awk 'END{print "salut dupont";}' < fichier.txt 1er lettre du 1er mot : awk '{print substr($1,1,1);}' < fichier.txt 1e mot de la ligne 2 : awk '{IF(NR=2){print $1}}' < fichier.txt
Bien entendu, le principal problème est celui de bien spécifier ce qu'on veut.
Le mieux serait d'apprendre à se servir de quelques outils de base:
man sh man bash man sed man awk cd /bin ; for f in * ; do man $f ; done
-- __Pascal_Bourguignon__ . * * . * .* . http://www.informatimago.com/ . * . .* * . . / () . * Living free in Alaska or in Siberia, a . . / . . * . grizzli's life expectancy is 35 years, .*. / * . . but no more than 8 years in captivity. . /* o . http://www.theadvocates.org/ * '''||''' . SCO Spam-magnet: ******************
julien.gautier
Pascal Bourguignon wrote:
- le fichier texte contient, sur la 1e ligne :
salut jean dupont hello fabrice durand
- je veux récupérer seulement : "jean" ou bien seulement : "s" (1e lettre du 1er mot), ou bien seulement "salut dupont", ou encore "hello" (1e mot de la ligne 2), etc.
comment faire ?
Il y a plein de façon de faire, mais awk parait assez indiqué:
seulement : "jean" : awk 'END{print "jean";}' < fichier.txt seulement : "s" : awk 'END{print "s";}' < fichier.txt seulement : "salut dupont" : awk 'END{print "salut dupont";}' < fichier.txt 1er lettre du 1er mot : awk '{print substr($1,1,1);}' < fichier.txt 1e mot de la ligne 2 : awk '{IF(NR=2){print $1}}' < fichier.txt
- je veux récupérer seulement : "jean" ou bien seulement : "s" (1e
lettre du 1er mot), ou bien seulement "salut dupont", ou encore "hello"
(1e mot de la ligne 2), etc.
comment faire ?
Il y a plein de façon de faire, mais awk parait assez indiqué:
seulement : "jean" : awk 'END{print "jean";}' < fichier.txt
seulement : "s" : awk 'END{print "s";}' < fichier.txt
seulement : "salut dupont" : awk 'END{print "salut dupont";}' < fichier.txt
1er lettre du 1er mot : awk '{print substr($1,1,1);}' < fichier.txt
1e mot de la ligne 2 : awk '{IF(NR=2){print $1}}' < fichier.txt
- je veux récupérer seulement : "jean" ou bien seulement : "s" (1e lettre du 1er mot), ou bien seulement "salut dupont", ou encore "hello" (1e mot de la ligne 2), etc.
comment faire ?
Il y a plein de façon de faire, mais awk parait assez indiqué:
seulement : "jean" : awk 'END{print "jean";}' < fichier.txt seulement : "s" : awk 'END{print "s";}' < fichier.txt seulement : "salut dupont" : awk 'END{print "salut dupont";}' < fichier.txt 1er lettre du 1er mot : awk '{print substr($1,1,1);}' < fichier.txt 1e mot de la ligne 2 : awk '{IF(NR=2){print $1}}' < fichier.txt
Merci beaucoup, cela va déjà m'aider.
pierre.ducrot
Julien Gautier wrote:
Comment fait-on pour n'afficher qu'un mot/ensemble de mots/caractère/ens. de caractères qui se trouve dans une chaine (éventuellement dans un fichier texte) ?
Du genre :
- le fichier texte contient, sur la 1e ligne :
salut jean dupont hello fabrice durand
- je veux récupérer seulement : "jean" ou bien seulement : "s" (1e lettre du 1er mot), ou bien seulement "salut dupont", ou encore "hello" (1e mot de la ligne 2), etc.
le awk est on ami! si tes lignes sont dans le fichier toto.txt awk '{ print $1 }' < toto.txt écrit le premier mot, $2 le secon...
man awk pour les autres commandes.
-- Pierre
Julien Gautier <julien.gautier@wanadoo.fr> wrote:
Comment fait-on pour n'afficher qu'un mot/ensemble de
mots/caractère/ens. de caractères qui se trouve dans une chaine
(éventuellement dans un fichier texte) ?
Du genre :
- le fichier texte contient, sur la 1e ligne :
salut jean dupont
hello fabrice durand
- je veux récupérer seulement : "jean" ou bien seulement : "s" (1e
lettre du 1er mot), ou bien seulement "salut dupont", ou encore "hello"
(1e mot de la ligne 2), etc.
le awk est on ami!
si tes lignes sont dans le fichier toto.txt
awk '{ print $1 }' < toto.txt
écrit le premier mot, $2 le secon...
Comment fait-on pour n'afficher qu'un mot/ensemble de mots/caractère/ens. de caractères qui se trouve dans une chaine (éventuellement dans un fichier texte) ?
Du genre :
- le fichier texte contient, sur la 1e ligne :
salut jean dupont hello fabrice durand
- je veux récupérer seulement : "jean" ou bien seulement : "s" (1e lettre du 1er mot), ou bien seulement "salut dupont", ou encore "hello" (1e mot de la ligne 2), etc.
le awk est on ami! si tes lignes sont dans le fichier toto.txt awk '{ print $1 }' < toto.txt écrit le premier mot, $2 le secon...
man awk pour les autres commandes.
-- Pierre
Stephane Louise
Julien Gautier wrote:
Comment fait-on pour n'afficher qu'un mot/ensemble de mots/caractère/ens. de caractères qui se trouve dans une chaine (éventuellement dans un fichier texte) ?
Du genre :
- le fichier texte contient, sur la 1e ligne :
salut jean dupont hello fabrice durand
- je veux récupérer seulement : "jean" ou bien seulement : "s" (1e lettre du 1er mot), ou bien seulement "salut dupont", ou encore "hello" (1e mot de la ligne 2), etc.
comment faire ?
Pour faire lapidaire :
man awk man sed man 7 regex voire "man grep" dans certans cas. Ensuite s'intéresser aux fonctionnalités de |,>,<,`, et des fonctionnalités du shell comme "for".
mata ne -- luigi
Julien Gautier wrote:
Comment fait-on pour n'afficher qu'un mot/ensemble de
mots/caractère/ens. de caractères qui se trouve dans une chaine
(éventuellement dans un fichier texte) ?
Du genre :
- le fichier texte contient, sur la 1e ligne :
salut jean dupont
hello fabrice durand
- je veux récupérer seulement : "jean" ou bien seulement : "s" (1e
lettre du 1er mot), ou bien seulement "salut dupont", ou encore "hello"
(1e mot de la ligne 2), etc.
comment faire ?
Pour faire lapidaire :
man awk
man sed
man 7 regex
voire "man grep" dans certans cas.
Ensuite s'intéresser aux fonctionnalités de |,>,<,`, et des
fonctionnalités du shell comme "for".
Comment fait-on pour n'afficher qu'un mot/ensemble de mots/caractère/ens. de caractères qui se trouve dans une chaine (éventuellement dans un fichier texte) ?
Du genre :
- le fichier texte contient, sur la 1e ligne :
salut jean dupont hello fabrice durand
- je veux récupérer seulement : "jean" ou bien seulement : "s" (1e lettre du 1er mot), ou bien seulement "salut dupont", ou encore "hello" (1e mot de la ligne 2), etc.
comment faire ?
Pour faire lapidaire :
man awk man sed man 7 regex voire "man grep" dans certans cas. Ensuite s'intéresser aux fonctionnalités de |,>,<,`, et des fonctionnalités du shell comme "for".
mata ne -- luigi
Schmurtz
- le fichier texte contient, sur la 1e ligne :
salut jean dupont hello fabrice durand
je suppose que c'est dans le fichier "test"
- je veux récupérer seulement : "jean"
cat test | sed 1!d | awk '{ print $2 }'
ou bien seulement : "s" (1e lettre du 1er mot),
cat test | sed 1!d | awk '{ print substr($1,1,1) }'
ou bien seulement "salut dupont",
cat test | sed 1!d | awk '{ print $1, $3 }'
ou encore "hello" (1e mot de la ligne 2), etc.
cat test | sed 2!d | awk '{ print $1 }'
pour plus d'info, lire les page de man de grep, sed et awk. (si tu enlèves la commande sed, les opérations sont effectué sur chaque ligne)
-- Schmurtz
- le fichier texte contient, sur la 1e ligne :
salut jean dupont
hello fabrice durand
je suppose que c'est dans le fichier "test"
- je veux récupérer seulement : "jean"
cat test | sed 1!d | awk '{ print $2 }'
ou bien seulement : "s" (1e lettre du 1er mot),
cat test | sed 1!d | awk '{ print substr($1,1,1) }'
ou bien seulement "salut dupont",
cat test | sed 1!d | awk '{ print $1, $3 }'
ou encore "hello" (1e mot de la ligne 2), etc.
cat test | sed 2!d | awk '{ print $1 }'
pour plus d'info, lire les page de man de grep, sed et awk.
(si tu enlèves la commande sed, les opérations sont effectué sur chaque
ligne)
cat test | sed 1!d | awk '{ print substr($1,1,1) }'
ou bien seulement "salut dupont",
cat test | sed 1!d | awk '{ print $1, $3 }'
ou encore "hello" (1e mot de la ligne 2), etc.
cat test | sed 2!d | awk '{ print $1 }'
pour plus d'info, lire les page de man de grep, sed et awk. (si tu enlèves la commande sed, les opérations sont effectué sur chaque ligne)
-- Schmurtz
Pascal Bourguignon
Schmurtz writes:
- le fichier texte contient, sur la 1e ligne :
salut jean dupont hello fabrice durand
je suppose que c'est dans le fichier "test"
- je veux récupérer seulement : "jean"
cat test | sed 1!d | awk '{ print $2 }'
Et zou! trois processus, trois programmes à apprendre, trois pages man à lire!
awk '{if(NR==1){print $2}}' < test
mais il voulais "jean", pas le deuxième mot de la première ligne!!!
awk 'END{print "jean"}'</dev/null ou: echo jean # si on veut bien lire man bash
Idem pour le reste...
-- __Pascal_Bourguignon__ . * * . * .* . http://www.informatimago.com/ . * . .* * . . / () . * Living free in Alaska or in Siberia, a . . / . . * . grizzli's life expectancy is 35 years, .*. / * . . but no more than 8 years in captivity. . /* o . http://www.theadvocates.org/ * '''||''' . SCO Spam-magnet: ******************
Schmurtz <moi@ici.com> writes:
- le fichier texte contient, sur la 1e ligne :
salut jean dupont
hello fabrice durand
je suppose que c'est dans le fichier "test"
- je veux récupérer seulement : "jean"
cat test | sed 1!d | awk '{ print $2 }'
Et zou! trois processus, trois programmes à apprendre, trois pages man à lire!
awk '{if(NR==1){print $2}}' < test
mais il voulais "jean", pas le deuxième mot de la première ligne!!!
awk 'END{print "jean"}'</dev/null
ou:
echo jean # si on veut bien lire man bash
Idem pour le reste...
--
__Pascal_Bourguignon__ . * * . * .* .
http://www.informatimago.com/ . * . .*
* . . / () . *
Living free in Alaska or in Siberia, a . . / . . * .
grizzli's life expectancy is 35 years, .*. / * . .
but no more than 8 years in captivity. . /* o .
http://www.theadvocates.org/ * '''||''' .
SCO Spam-magnet: postmaster@sco.com ******************
Et zou! trois processus, trois programmes à apprendre, trois pages man à lire!
awk '{if(NR==1){print $2}}' < test
mais il voulais "jean", pas le deuxième mot de la première ligne!!!
awk 'END{print "jean"}'</dev/null ou: echo jean # si on veut bien lire man bash
Idem pour le reste...
-- __Pascal_Bourguignon__ . * * . * .* . http://www.informatimago.com/ . * . .* * . . / () . * Living free in Alaska or in Siberia, a . . / . . * . grizzli's life expectancy is 35 years, .*. / * . . but no more than 8 years in captivity. . /* o . http://www.theadvocates.org/ * '''||''' . SCO Spam-magnet: ******************
julien.gautier
Pascal Bourguignon wrote:
Et zou! trois processus, trois programmes à apprendre, trois pages man à lire!
awk '{if(NR==1){print $2}}' < test
mais il voulais "jean", pas le deuxième mot de la première ligne!!!
en fait, si....
awk 'END{print "jean"}'</dev/null ou: echo jean # si on veut bien lire man bash
cat test | sed 1!d | awk '{ print substr($1,1,1) }'
ou bien seulement "salut dupont",
cat test | sed 1!d | awk '{ print $1, $3 }'
ou encore "hello" (1e mot de la ligne 2), etc.
cat test | sed 2!d | awk '{ print $1 }'
pour plus d'info, lire les page de man de grep, sed et awk. (si tu enlèves la commande sed, les opérations sont effectué sur chaque ligne)
ok merci.
Pascal Bourguignon
(Julien Gautier) writes:
Pascal Bourguignon wrote:
Et zou! trois processus, trois programmes à apprendre, trois pages man à lire!
awk '{if(NR==1){print $2}}' < test
mais il voulait "jean", pas le deuxième mot de la première ligne!!!
en fait, si....
D'où l'importance de bien spécifier ce que l'on veut!
Sinon, pour toutes ces questions, la réponse pourrait simplement être: apprendre les bases d'unix, des shells et les commandes de base comme ed, sed, awk, sort, etc (tout ce qu'il y a dans /bin et une bonne partie de /usr/bin).
-- __Pascal_Bourguignon__ . * * . * .* . http://www.informatimago.com/ . * . .* * . . / () . * Living free in Alaska or in Siberia, a . . / . . * . grizzli's life expectancy is 35 years, .*. / * . . but no more than 8 years in captivity. . /* o . http://www.theadvocates.org/ * '''||''' . SCO Spam-magnet: ******************
Et zou! trois processus, trois programmes à apprendre, trois pages man à lire!
awk '{if(NR==1){print $2}}' < test
mais il voulait "jean", pas le deuxième mot de la première ligne!!!
en fait, si....
D'où l'importance de bien spécifier ce que l'on veut!
Sinon, pour toutes ces questions, la réponse pourrait simplement être:
apprendre les bases d'unix, des shells et les commandes de base comme
ed, sed, awk, sort, etc (tout ce qu'il y a dans /bin et une bonne
partie de /usr/bin).
--
__Pascal_Bourguignon__ . * * . * .* .
http://www.informatimago.com/ . * . .*
* . . / () . *
Living free in Alaska or in Siberia, a . . / . . * .
grizzli's life expectancy is 35 years, .*. / * . .
but no more than 8 years in captivity. . /* o .
http://www.theadvocates.org/ * '''||''' .
SCO Spam-magnet: postmaster@sco.com ******************
Et zou! trois processus, trois programmes à apprendre, trois pages man à lire!
awk '{if(NR==1){print $2}}' < test
mais il voulait "jean", pas le deuxième mot de la première ligne!!!
en fait, si....
D'où l'importance de bien spécifier ce que l'on veut!
Sinon, pour toutes ces questions, la réponse pourrait simplement être: apprendre les bases d'unix, des shells et les commandes de base comme ed, sed, awk, sort, etc (tout ce qu'il y a dans /bin et une bonne partie de /usr/bin).
-- __Pascal_Bourguignon__ . * * . * .* . http://www.informatimago.com/ . * . .* * . . / () . * Living free in Alaska or in Siberia, a . . / . . * . grizzli's life expectancy is 35 years, .*. / * . . but no more than 8 years in captivity. . /* o . http://www.theadvocates.org/ * '''||''' . SCO Spam-magnet: ******************
Stephane CHAZELAS
2003-12-09, 14:50(+01), Pascal Bourguignon: [...]
Sinon, pour toutes ces questions, la réponse pourrait simplement être: apprendre les bases d'unix, des shells et les commandes de base comme ed, sed, awk, sort, etc (tout ce qu'il y a dans /bin et une bonne partie de /usr/bin).
On gagnera du temps (et beaucoup plus) en se contentant de perl si on ne compte pas utiliser un shell par ailleurs (ce qui est peut-être le cas pour un utilisateur de MacOSX).
Sinon, pour toutes ces questions, la réponse pourrait simplement être:
apprendre les bases d'unix, des shells et les commandes de base comme
ed, sed, awk, sort, etc (tout ce qu'il y a dans /bin et une bonne
partie de /usr/bin).
On gagnera du temps (et beaucoup plus) en se contentant de perl
si on ne compte pas utiliser un shell par ailleurs (ce qui est
peut-être le cas pour un utilisateur de MacOSX).
Sinon, pour toutes ces questions, la réponse pourrait simplement être: apprendre les bases d'unix, des shells et les commandes de base comme ed, sed, awk, sort, etc (tout ce qu'il y a dans /bin et une bonne partie de /usr/bin).
On gagnera du temps (et beaucoup plus) en se contentant de perl si on ne compte pas utiliser un shell par ailleurs (ce qui est peut-être le cas pour un utilisateur de MacOSX).