我正在尝试打印出我搜索的字符串旁边的数字(使用 shell 脚本)。
例如,我的文件包含一行
arg[30] = -Xmx4096m
我使用字符串搜索文件Xmx
,并且需要附加到字符串的下一个数字的输出,并且输出中不需要其他任何内容。我怎样才能实现这个目标?
答案1
sed -n 's/.*Xmx\([0-9]\+\).*/\1/p' filename
解释:
sed -n
使 sed 仅在被告知时打印输出(由p
)s/<p1>/<p2>/p
搜索<p1>
并替换为<p2>
.然后打印行.*Xmx\([0-9]\+\).*
任何后跟数字的字符串Xmx
。数字被“捕获”。\1
第一个捕获的组。
用人类的话来说:搜索包含Xmx
后跟数字的行。记下数字。丢弃所有内容,但保留数字。打印数字。
答案2
如果您的版本grep
支持 PCRE 模式,您可以使用grep -Po 'Xmx\K\d+'
前任。
echo 'F arg[30] = -Xmx4096m' | grep -Po 'Xmx\K\d+'
4096