Извлечение шаблона с помощью команды sed - PullRequest
0 голосов
/ 21 ноября 2011

У меня есть такая строка

 "112344 1234234 guest 25 % allocation used"

Я хочу извлечь 25 из этой строки, используя sed.

В данной строке "112344 1234234 используется 25% размещения гостей", меня интересует только "25%". Первые поля также могут быть пустыми, примерно так:

«25% распределения использовано»

, но "используется распределение%" - фиксированная строка. Таким образом, регулярное выражение должно быть основано на этом фиксированном паттерне.

Может кто-нибудь, пожалуйста, помогите мне в этом.

Ответы [ 3 ]

2 голосов
/ 21 ноября 2011

По сути, вы хотите, чтобы поле было четвертым справа.Чтобы получить это, я бы использовал awk:

awk '{ print $(NF-3) }'

Если оно обязательно должно быть в sed, попробуйте это:

sed -e 's/^/ /' -e 's/\(^|.* \)\(.*\) % allocation used/\1/'
1 голос
/ 21 ноября 2011

Если вы уверены, что число, предшествующее «%», состоит из 2 цифр, вы можете использовать следующее

[jaypal~/Temp]$ cat text5
112344 1234234 guest 25 % allocation used
25 % allocation used
2344 guest 15 % allocation used

[jaypal~/Temp]$ sed 's/.*\(.. %\).*/\1/' text5
25 %
25 %
15 %
0 голосов
/ 21 ноября 2011

Попробуйте это

 cut -d% -f1 | awk '{ print $(NF) }'
...