Bash从不同行的多个不同字符串中提取var的最佳方式



我的命令的输出是:

scan: DVD has 6 title(s)
...some text...
+ title 1:
...some text...
+ duration: 00:43:12
...some text...
+ title 2:
...some text...
+ duration: 00:43:12
...some text...
+ title 3:
...some text...
+ duration: 00:41:15

我想要的var

6来自scan: DVD has 6 title(s)

1来自+ title 1:

00:43:12来自+ duration: 00:43:12

并不是说最后两个是链接的,也许可以使用一个数组用于标题和持续时间title[1]="00:43:12"

实际上,我一次只能提取一个信息,但如果可能的话,我不想多次运行该命令。例如:

[command] |& grep -Po '(?<=DVD has )([0-9]+)')

也许我应该先将命令输出存储到一个文件中?请问最好的开始方式是什么?

您没有指定要对这些值做什么,但这里有一个awk脚本,它可以收集它们并为每一行输入输出它们:

yourcommand | awk '
NR==1{ titlecount=$4; }
/+ title/{ curtitle=$3; }
/+ duration/{ dur=$3; }
1{ print titlecount, curtitle, dur; }
'
对不起,我的问题不清楚。基于您的答案
cat DVDscan.txt | awk '
/+ title/{gsub(":","",$3); print $3 }
/+ duration:/{ print $3 }'

输出:

1
00:43:12
2
00:43:12
3
00:41:15
4
00:41:15
5
00:41:17
6
00:41:17
7
00:41:15
8
00:41:15

想要将输出存储到倍数数组:

title[1]="00:43:12"

所以我会知道标题的总数,并且可以访问指定标题的持续时间。

谢谢你的时间和帮助。

相关内容

  • 没有找到相关文章

最新更新