linux - 如何在bash中获取字符串后的第一个数字

标签 linux bash

例如,如果我在名为 input.txt 的文件中有这些行

姓名:汤姆

年龄:12

名字:鲍勃

年龄:13

姓名:吉姆

年龄:14

姓名:乔

年龄:15

我想要 Jim 之后的第一个数字,即 14。谢谢 :)

最佳答案

对此有多种解决方案,使用的工具包括 sedawkcut 等。不过我更喜欢 perl

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

解释:

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

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

关于linux - 如何在bash中获取字符串后的第一个数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40665255/

相关文章:

php - Apache 文件所有权/组

linux - 我的 cron 作业没有按预期工作,为什么?

linux - 从启动器以 root 身份运行 Pycharm

arrays - 使用 mapfile 将输出保存到关联数组

python - 使用 lftp 提取文件并遍历提取的文件

linux - 在 Raspbian/etc/profile 脚本中找不到命令

正则表达式模式替换

linux - 重命名与目录同名的文件 - bash 脚本

linux - 根据反斜杠分隔符分割字符串

linux - 如何编写全屏 Linux 控制台应用程序/脚本?