某些命令的输出包含
>> ..................546 Jobs Retrieved
List of jobs Retrieved: 1-4,6-12,14,2017-2018 ............
>>> 30 Jobs Done
Jobs terminated: retrieve them with: crab -getoutput <List of jobs>
List of jobs: 203,376,578,765,803,809,811
.....................
我想仅提取在30号作业完成后发生的203,376,578,765,803,809,811。之后,我将这个数字作为字符串放在某个变量中,以便在某些命令中使用它。我怎么能这样做。
我用这种方式试了一下:
请帮帮我。
非常感谢你。
答案 0 :(得分:2)
您可以使用:
awk '/30 Jobs Done/ {f=1;next} f && /List of jobs:/ {print $4;exit}' file
203,376,578,765,803,809,811
当找到30 Jobs Done
时,它会将标记f
设置为true
如果它然后找到List of jobs:
并且标记f
为真,则打印字段4
答案 1 :(得分:1)
使用简单的工具:
egrep '^\s+List of jobs: [0-9,]+$' status.log | cut -d: -f2
egrep
的模式匹配整行,cut
返回:
之后的所有内容。
这意味着您将在结果中获得领先的空间。如果这是一个问题:
egrep '^\s+List of jobs: [0-9,]+$' status.log | cut -d: -f2 | cut -c2-
答案 2 :(得分:1)
你可以这样做:
grep -A2 "Jobs Done" yourfile | awk '/List of jobs:/{print $4}'
在&#34; Jobs Done&#34;之后抓两行。 (-A2
)然后查找&#34;工作列表&#34;使用awk
并打印第4个字段。