2016-11-17 86 views
3

举例来说,如果我有一个名为input.txt在bash字符串后如何获得的第一个数字

名文件那些行:汤姆

年龄:12

名称:鲍勃

年龄:13

名:吉姆

年龄:14

名字:乔

年龄:15

我想第一个数字后,吉姆,这是14谢谢:)

+1

迷茫过输入...问号“体重”,其中所有值都在单后,原来的问题......这个现在已经改为“名称“和”年龄“。 – Adam

+1

@Phoebe,每次编辑,你发布的文件结构都不一样,你想要做什么? – Rashmirathi

+2

好的,现在输入就清楚了......你期待的输出......只有14岁......或者所有年龄段的12,13,14,15 ......为什么Jim特别呢? – Adam

回答

2

有多种解决方案,这一点,使用的工具包括sedawkcut等,但我更喜欢perl

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

说明:

  • ([\d.]+)岁以后的任何数量的匹配:吉姆的下一行。

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

+0

我试过了,但没有打印任何东西:( – Phoebe

+0

@Phoebe Adam的解决方案适用于我 – Rashmirathi

+0

我刚编辑我的问题,使其更清楚,谢谢:D – Phoebe

2

一个解决方案使用grep

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

谢谢,但我意识到我的问题并不清楚足够了,所以我编辑了它:) – Phoebe

+0

@Phoebe我编辑了我的答案。 – badjr

相关问题