У меня есть строка в файле формата
opt1= abc opt2= 3 opt3= 10 opt4= 0
Теперь я хочу считать число после opt3
например.
Я сначала запустил бы с захвата для строки
grep opt3 file |
и передайте его по каналу к следующей команде. Но теперь я действительно не знаю, как продолжить двигаться, мои навыки оболочки являются довольно элементарными..
С grep и совместимым с Perl regexes (PCRE):
grep -Po 'opt3=\s*\K\d+'
-o
опция делает grep
, только совпавший текст печати \K
в PCRE указывает, что матч на самом деле начинается отсюда: предыдущее выражение должно быть протестировано на, но не включено в совпавший текст opt3=\s*
, opt3
сопровождаются пробелами, который не включен в совпавший текст, следовательно только число после печатается. Я использовал бы эти cut
команда, чтобы сделать то же:
cut -d' ' -f7 file
информация:
-d
: разделитель (что разделяет поля)
-f7
: распечатайте седьмое поле
Я думаю, что Вы ищете,
grep -Po "(?<=opt3=\s)[0-9]+" file
(?<=opt3=\s)
: мы ищем "opt3 =", однако мы не собираемся включать его. 0-9]+
число после "opt3 =" -o
только показывают соответствие