Получите число после ключевого слова в строке

У меня есть строка в файле формата

opt1= abc  opt2= 3 opt3= 10 opt4= 0

Теперь я хочу считать число после opt3 например.

Я сначала запустил бы с захвата для строки

grep opt3 file |

и передайте его по каналу к следующей команде. Но теперь я действительно не знаю, как продолжить двигаться, мои навыки оболочки являются довольно элементарными..

0
задан 6 June 2017 в 02:11

3 ответа

С grep и совместимым с Perl regexes (PCRE):

grep -Po 'opt3=\s*\K\d+'
  • -o опция делает grep, только совпавший текст печати
  • \K в PCRE указывает, что матч на самом деле начинается отсюда: предыдущее выражение должно быть протестировано на, но не включено в совпавший текст
  • opt3=\s*, opt3 сопровождаются пробелами, который не включен в совпавший текст, следовательно только число после печатается.
2
ответ дан 3 November 2019 в 03:23

Я использовал бы эти cut команда, чтобы сделать то же:

cut -d' ' -f7 file 

информация:

-d: разделитель (что разделяет поля)

-f7: распечатайте седьмое поле

1
ответ дан 3 November 2019 в 03:23

Я думаю, что Вы ищете,

grep -Po "(?<=opt3=\s)[0-9]+" file
  • (?<=opt3=\s): мы ищем "opt3 =", однако мы не собираемся включать его.
  • 0-9]+ число после "opt3 ="
  • -o только показывают соответствие
0
ответ дан 3 November 2019 в 03:23

Другие вопросы по тегам:

Похожие вопросы: