如何获取bash中字符串后面的第一个数字

时间:2016-11-17 21:21:48

标签: linux bash

例如,如果我在名为input.txt

的文件中有这些行

名字:汤姆

年龄:12

姓名:鲍勃

年龄:13

姓名:吉姆

年龄:14

姓名:Joe

年龄:15

我想要吉姆之后的第一个号码,即14岁。谢谢:)

2 个答案:

答案 0 :(得分:2)

有多种解决方案,使用sedawkcut等工具。但我更喜欢perl

perl -0777 -nle 'print "$1\n" if /^name:\s*Jim\s*\nage:\s*([\d+.]+)/gm' file.txt 

说明:

  • ([\d.]+)匹配年龄后的任何数字:在Jim之后的下一行。

  • -0777是与/ m结合使用的Perl Slurp模式,用于多行匹配。

答案 1 :(得分:2)

使用grep的解决方案:

cat file.txt | grep -A2 'Jim' | grep -Eo '[0-9]*'