在bash中引用后提取数字

时间:2018-07-16 06:00:57

标签: regex bash

我的输出看起来像这样

[1] "0 found |2018-07-15 22:21:09 - no new item is submitted "

如何使用bash中的正则表达式使用“ grep”提取 0

谢谢!

4 个答案:

答案 0 :(得分:0)

如果可以,awk可以。您能不能试着跟随,让我知道这是否对您有帮助。

awk 'match($0,/\"[0-9]+/){print substr($0,RSTART+1,RLENGTH-1)}' Input_file

OR

your_command | awk 'match($0,/\"[0-9]+/){print substr($0,RSTART+1,RLENGTH-1)}'

答案 1 :(得分:0)

尝试使用此grep选项:

grep -Po '^([0-9]+) (?=found)'

Demo

上面的行使用模式^([0-9]+) (?=found),该模式表示要在行的开头匹配一个数字,并紧随其后的是文本found

答案 2 :(得分:0)

有一种解决方案

$ sed 's/^.*"\(.*\) found .*/\1/' <<< '[1] "0 found |2018-07-15 22:21:09 - no new 
item is submitted "'
0

如果perl很重要,这是另一种简单的方法

$ perl -ne 'print $1 if /(\d+) found/' <<< '[1] "0 found |2018-07-15 22:21:09 - no 
new item is submitted "'
0

答案 3 :(得分:0)

我也提出了以下解决方案:

$ LOG_FILE是我要写入所有输出的文件

parsed