如何grep文件中的字符串并输出字符串旁边的数字

如何grep文件中的字符串并输出字符串旁边的数字

我正在尝试打印出我搜索的字符串旁边的数字(使用 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

相关内容