У меня есть файл, в котором есть эта строка:
$n22(s:Tstring) = "252";
Я пытаюсь написать команду оболочки для grep файла и вернуть только 252. Вот что у меня есть до сих пор:
grep -o '$n22(s:Tstring).*;' /etc/test/testfile.cfg
$n22(s:Tstring) = "252";
Как видите, он находит строку, но возвращает все. Я просто хочу 252. Подскажите, пожалуйста, где я ошибаюсь?
Спасибо
Это должно быть grep
? Вы могли бы сделать это с awk
лайк:
awk -F\" '/\$n22\(s:Tstring\)/ {print $2}'
с GNU grep, по крайней мере, вы можете использовать регулярное выражение в стиле perl и сделать это так:
grep -Po '\$n22\(s:Tstring\)[^"]+"\K[^"]+'
в \K
означает не включать все, что соответствовало до этого момента, как часть соответствия для -o
вариант.