获取字符串中关键字后的数字

获取字符串中关键字后的数字

我有一个格式为

opt1= abc  opt2= 3 opt3= 10 opt4= 0

opt3现在我想读出例如后面的​​数字。

我会首先 grapping 一下这一行

grep opt3 file |

并将其通过管道传输到下一个命令。但现在我真的不知道该如何继续,我的 shell 技能还很初级。

答案1

使用 grep 和 Perl 兼容正则表达式 (PCRE):

grep -Po 'opt3=\s*\K\d+'
  • -o选项grep仅打印匹配的文本
  • \KPCRE 中的 表示匹配实际上从这里开始:应该测试前面的表达式,但不包含在匹配文本中
  • opt3=\s*后面是opt3空格,不包含在匹配的文本中,因此只打印后面的数​​字。

答案2

我将使用以下cut命令执行相同操作:

cut -d' ' -f7 file 

信息:

-d:分隔符(用于分隔字段)

-f7:打印第七个字段

答案3

我认为你要找的是

grep -Po "(?<=opt3=\s)[0-9]+" file
  • (?<=opt3=\s):我们正在寻找“opt3= ”,但是我们不会将其包括在内。
  • 0-9]+“opt3=”后面的数字
  • -o只显示比赛

相关内容