对不起,我的问题不清楚。基于您的答案
我的命令的输出是:
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"
所以我会知道标题的总数,并且可以访问指定标题的持续时间。
谢谢你的时间和帮助。