Shell捕获子字符串,它是搜索子字符串

时间:2017-08-24 16:01:32

标签: string bash shell text

我正在搜索特定字符串的文本文件,并且正在查找一个数字,该数字是此字符串下面的一行。下面举一个例子来说明它。

这是文本文件的内容

2017-08-14 14:04:53,836  INFO    - XML File FILE1 is created in /path/to/file
2017-08-14 14:10:04,696  INFO    - #Instances Extracted: 32960
2017-08-14 14:17:52,248 INFO    - XML File FILE2 is created in /path/to/file
2017-08-14 14:41:33,720  INFO    - #Instances Extracted: 119534

在文本文件中,我想搜索字符串FILE1并在其下面的行上捕获数字32960。

最好的方法是什么?我正在考虑搜索FILE1,然后在" Instances Extracted"之后搜索第一个实例。并在此之后捕获数字,这是最好的解决方案吗?

非常感谢您提供的任何帮助

2 个答案:

答案 0 :(得分:1)

您可以使用awk而不getline()

awk 'p==1 {p=0; print $NF } /FILE1/ {p=1}' inputfile

答案 1 :(得分:0)

快速而肮脏的解决方案:

cat file.txt | grep -A1 FILE1 | sed "s/.*Instances Extracted: \([0-9]*\).*/\1/;tx;d;:x"

grep -A1将匹配的行和下一行拉入标准输出,然后sed将数字拉出(并删除由于;tx;d;:x而不匹配的所有行结束)