我有一个格式为
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
仅打印匹配的文本 \K
PCRE 中的 表示匹配实际上从这里开始:应该测试前面的表达式,但不包含在匹配文本中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
只显示比赛