擅长:python、mysql、java
<p>gnu<strong>awk</strong>解决方案:</p>
<pre><code> cat tst.awk
{ s=gensub(/.*(time=|silence_(start|end): )([0-9.:]+).*/, "\\3", "g");
print s
}
</code></pre>
<p>解释正则表达式:</p>
<pre><code>.* # anything
( # group 1 start
time= # matching string "time="
| # OR
silence_(start|end): # matching string "silence_start: "
# or "silence_end: "
) # group 1 end
( # group 3 start
[0-9.:]+ # combination of number, "." and ":"
) # group 3 end
.* # anything
</code></pre>
<p>您可以将其用作:</p>
<pre><code>$ awk -f tst.awk input.txt
1.32515
1.88188
2.99698
3.42311
5.58311
6.13984
7.6729
00:00:09.12
</code></pre>
<p>或作为一个班轮:</p>
<pre><code> awk '{s=gensub(/.*(time=|silence_(start|end): )([0-9.:]+).*/, "\\3", "g"); print s}' input.txt
</code></pre>