grep commad не работает должным образом - PullRequest
0 голосов
/ 22 октября 2010

Я пытаюсь извлечь значение из

в File.txt:

116206K-> 13056K (118080K), 0,0879950 с] [Срок владения: 274796K-> 68056K (274892K), 0,2713740 секунд] 377579K-> 68056K (392972K), [Пермь: 17698K-> 17604K (17920K)], 0,3604630 секунд]

Я пытаюсь извлечь

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

Что здесь не так.потому что я пытаюсь получить

392972K от 377579K-> 68056K (392972K)

Но я должен получить от [Пермь: 17698K-> 17604K (17920K)] 17920

Ответы [ 2 ]

3 голосов
/ 22 октября 2010

Одно быстрое исправление, измените -f3 на -f4, когда появится нужное поле после 3-я запятая:

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

Вы также можетеиспользуйте sed как:

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

Рабочая ссылка

0 голосов
/ 22 октября 2010
$ awk -vFS="->" '{gsub(/)].*|.*\(/,"",$5);print $5}' file1
17920K
...