#1 Le 11/06/2010, à 20:40
- wido
[résolu] Calculer nombre de ligne par rapport à la position valeur
Bonjour,
je désirerais savoir comment on connait la position d'une valeur dans un texte en nombre de ligne voici un exemple:
==> Found audio stream: 132
==> Found audio stream: 131
==> Found audio stream: 130
==> Found audio stream: 129
==> Found audio stream: 128
j'ai la valeur 129 qui se trouve à la ligne n°4 mais comment fait-on en ligne de commande?
j'ai essayé avec wc -l mais elle me donne le nombre total de ligne.
Dernière modification par wido (Le 11/06/2010, à 21:01)
Hors ligne
#2 Le 11/06/2010, à 20:51
- alej
Re : [résolu] Calculer nombre de ligne par rapport à la position valeur
Si j'ai bien compris, p.e...
$ cat toto
==> Found audio stream: 132
==> Found audio stream: 131
==> Found audio stream: 130
==> Found audio stream: 129
==> Found audio stream: 128
$ sed -n '/129/=' toto
4
Hors ligne
#3 Le 11/06/2010, à 21:00
- wido
Re : [résolu] Calculer nombre de ligne par rapport à la position valeur
c'est complétement ça
Hors ligne
#4 Le 11/06/2010, à 22:30
- alex2423
Re : [résolu] Calculer nombre de ligne par rapport à la position valeur
Si j'ai bien compris, p.e...
$ cat toto ==> Found audio stream: 132 ==> Found audio stream: 131 ==> Found audio stream: 130 ==> Found audio stream: 129 ==> Found audio stream: 128 $ sed -n '/129/=' toto 4
Je connais un peu vim et donc indirectement sed mais je ne comprends pouquoi tu as mis "="
Juste par curiosité A quoi sert il ?
En ligne
#5 Le 11/06/2010, à 22:39
- alej
Re : [résolu] Calculer nombre de ligne par rapport à la position valeur
« Print Line Number
An equal sign ( = ) following an address prints the line number of the matched line »
(source : sed & awk, Second Edition by Dale Dougherty and Arnold Robbins © 1997, 1990 O'Reilly & Associates, Inc. - page 95)
Hors ligne
#6 Le 11/06/2010, à 22:45
- zapple
Re : [résolu] Calculer nombre de ligne par rapport à la position valeur
un simple :
grep -n 129 toto
suffit
Hors ligne
#7 Le 11/06/2010, à 22:51
- alej
Re : [résolu] Calculer nombre de ligne par rapport à la position valeur
$ sed -n '/129/=' toto
4
$ grep -n 129 toto
4:==> Found audio stream: 129
On notera la légère différence...
Hors ligne
#8 Le 11/06/2010, à 23:02
- zapple
Re : [résolu] Calculer nombre de ligne par rapport à la position valeur
La question était de savoir à quelle ligne se trouve l'expression qu'il veut, et il l'a.
Hors ligne
#9 Le 11/06/2010, à 23:26
- alej
Re : [résolu] Calculer nombre de ligne par rapport à la position valeur
Il en a même +
Hors ligne
#10 Le 11/06/2010, à 23:58
- alex2423
Re : [résolu] Calculer nombre de ligne par rapport à la position valeur
« Print Line Number
An equal sign ( = ) following an address prints the line number of the matched line »
(source : sed & awk, Second Edition by Dale Dougherty and Arnold Robbins © 1997, 1990 O'Reilly & Associates, Inc. - page 95)
Je pensais que le -n avait un rapport avec le numéro de ligne
mais en regardant le man, l'option permet de supprimer les espaces blanc à l'affichage. Bref rien à voire avec le numéro de ligne.....
(=), il y a très très peu de chance que je m'en souvienne un jour. Il n'y a pas de mémotechnique pour se souvenir.
Bref, je préfère le coup du grep -n que l'on peut cutter si l'on souhaite récupérer uniquement le numéro de ligne
grep -n monfichier | cut -d ":" -f 1
Il y a tellement de truc à retenir que je préfère un tri dans ma tête
En tout cas merci pour toutes ces explications....
En ligne
#11 Le 12/06/2010, à 00:24
- alej
Re : [résolu] Calculer nombre de ligne par rapport à la position valeur
Je pensais que le -n avait un rapport avec le numéro de ligne mais en regardant le man, l'option permet de supprimer les espaces blanc à l'affichage
On va pas faire le réveillon dans un fil qui est marqué résolu par son auteur depuis 5 ou 6 posts mais t'as regardé un peu vite...
Hors ligne
#12 Le 12/06/2010, à 22:23
- wido
Re : [résolu] Calculer nombre de ligne par rapport à la position valeur
On peut continuer à poster sur ce sujet , ça permet d'une part de connaître d'autre commande offrant le même résultat et d'autre part de confronter ces idées
Dernière modification par wido (Le 12/06/2010, à 22:24)
Hors ligne
#13 Le 13/06/2010, à 07:12
- credenhill
Re : [résolu] Calculer nombre de ligne par rapport à la position valeur
hello
avec awk
- si la ligne contient 129
- si le dernier champ contient 129
- si le dernier champ est égal à 129 (chaine de caractère)
- si le dernier champ == 129 (numérique)
$ cat a1
==> Found audio stream: 132
==> Found audio stream: 131
==> Found audio stream: 130
==> Found audio stream: 129
==> Found audio stream: 128
$
$ awk '/129/ {print NR}' a1
4
$
$ awk '$NF ~ /129/ {print NR}' a1
4
$
$ awk '$NF ~ /^129$/ {print NR}' a1
4
$
$ awk '$NF == 129 {print NR}' a1
4
$
Hors ligne
#14 Le 14/06/2010, à 09:43
- Totor
Re : [résolu] Calculer nombre de ligne par rapport à la position valeur
[...]
- si le dernier champ est égal à 129 (chaine de caractère)[...] $ awk '$NF ~ /^129$/ {print NR}' a1 4
Dans ce cas précis, il n'est pas utile d'utiliser une ER(E) puisque la valeur à rechercher est connue dans sa totalité. On peut donc utiliser ta dernière forme avec l'emploi des guillemets puisqu'il s'agit d'une chaine de caractère.
$ awk '$NF == "129" {print NR}' a1
-- Lucid Lynx --
Hors ligne