我有一个文件,其中包含以下行:
$n22(s:Tstring) = "252";
我正在尝试编写一个 shell 命令来 grep 该文件并仅返回 252。这是我目前所得到的:
grep -o '$n22(s:Tstring).*;' /etc/test/testfile.cfg
$n22(s:Tstring) = "252";
如您所见,它找到了该行,但返回了所有内容。我只想要 252。您能告诉我我哪里出错了吗?
谢谢
答案1
一定要这样吗grep
?你可以这样做awk
:
awk -F\" '/\$n22\(s:Tstring\)/ {print $2}'
使用 GNU grep 至少您可以使用 perl 风格的正则表达式并像这样执行:
grep -Po '\$n22\(s:Tstring\)[^"]+"\K[^"]+'
意思\K
是不包括到那时为止匹配的所有内容作为选项匹配的一部分-o
。