Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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 big_smile

Hors ligne

#4 Le 11/06/2010, à 22:30

alex2423

Re : [résolu] Calculer nombre de ligne par rapport à la position valeur

alej a écrit :

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 ?

Hors 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... wink

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 + big_smile

Hors ligne

#10 Le 11/06/2010, à 23:58

alex2423

Re : [résolu] Calculer nombre de ligne par rapport à la position valeur

alej a écrit :

« 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 sad
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 big_smile

En tout cas merci pour toutes ces explications....

Hors ligne

#11 Le 12/06/2010, à 00:24

alej

Re : [résolu] Calculer nombre de ligne par rapport à la position valeur

alex2423 a écrit :

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 big_smile 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 smile , ç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 roll

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

credenhill a écrit :

[...]
- 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