2010-10-22 21 views
0

Je suis en train d'extraire la valeur degrep commad ne fonctionne pas correctement

dans Fichier.txt:

116206K-> 13056K (118080K), 0.0879950 secs] [Poste permanent: 274796K-> 68056K (274892K), 0,2713740 secs] 377579K-> 68056K (392972K), [Perm : 17698K-> 17604K (17920K)], 0.3604630 secs]

j'essayer d'extraire

cat File.txt | grep 'Perm '| cut -d',' -f3|cut -d'(' -f2 |cut -d')' -f 1 

Quel est le problème ici. parce que je suis en train Je reçois le

392972K qui est de 377579K-> 68056K (392972K)

Mais je devrais obtenir de [Perm: 17698K-> 17604K (17920K)]

+0

remarque: fichier 'cat | grep' est une ** utilisation inutile de chat ** (* UUOC *). Utilisez 'grep 'Perm' file' à la place, cela coûte un processus de moins. – Benoit

+0

Ceci est seulement pour le test .. J'ai une autre raison pour laquelle je le fais. – Tree

Répondre

3

une solution rapide, changer -f3 à -f4 que le champ dont vous avez besoin apparaît après la 3ème virgule:

cat File.txt | grep 'Perm '| cut -d',' -f4|cut -d'(' -f2 |cut -d')' -f 1 
             ^^ 

Vous pouvez également utiliser sed comme:

grep 'Perm' File.txt | sed -r 's/.*Perm :.*\((.*?)\).*/\1/' 

Working link

0
$ awk -vFS="->" '{gsub(/)].*|.*\(/,"",$5);print $5}' file1 
17920K