Grep: пропустить пробелы между поиском и результатами - PullRequest
2 голосов
/ 24 января 2020

Исходный текстовый файл: Gross Bushels 1225.35

Grep: (?<=Bushels\s)[\0-9,\.]*.

Желаемый возврат: 1225.35

Я ищу "Gross Bushels" и Я хочу записать число непосредственно после этого, без пробелов.

Однако исходный файл может иметь более одного пробела между "s" и первым числом. Я хочу обрезать 1 или более пробелов, а не только один. Я понимаю, что мне, вероятно, нужен какой-то переключатель на "\s", но не могу понять, что.

1 Ответ

4 голосов
/ 24 января 2020

Вы можете использовать \K для сброса совпадения в PCRE, что позволяет избежать просмотра сзади, который не может иметь длину c. Вы можете использовать это:

s='Gross Bushels   1225.35'
grep -oP '\bBushels\s+\K[\d,.]+' <<< "$s"

1225.35

Если вы хотите, чтобы ваше регулярное выражение было немного более строгим, используйте:

\bBushels\h+\K\d+([.,]\d+)*
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...