例如,如果我在名为input.txt
的文件中有这些行名字:汤姆
年龄:12
姓名:鲍勃
年龄:13
姓名:吉姆
年龄:14
姓名:Joe
年龄:15
我想要吉姆之后的第一个号码,即14岁。谢谢:)
答案 0 :(得分:2)
有多种解决方案,使用sed
,awk
,cut
等工具。但我更喜欢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]*'