Назад | Перейти на главную страницу

команда grep для извлечения данных из файла

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

$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 вариант.