sed 反向引用
$ cat result.txt | grep 'Test net output #1: ctc_loss'
I0511 23:14:30.107903 9 solver.cpp:398] Test net output #1: ctc_loss = 0.33564 (* 1 = 0.33564 loss)
I0511 23:16:57.380986 9 solver.cpp:398] Test net output #1: ctc_loss = 0.162471 (* 1 = 0.162471 loss)
I0511 23:19:27.566398 9 solver.cpp:398] Test net output #1: ctc_loss = 0.22051 (* 1 = 0.22051 loss)
I0511 23:21:58.553233 9 solver.cpp:398] Test net output #1: ctc_loss = 0.333847 (* 1 = 0.333847 loss)
提取时间
$ sed -e 's/\(I0511\ \)\(.*\)\(9\ solver.*\)/\2/g'
23:21:58.553233
note:
1. 三下五去二, 上来先搞 \(........\) , 把第一部分东西放在.....那里。 即\(I0511\ \)。 注意,空格要使用反斜线。
2. 想提取的东西一般就用 \(.*\) 来搞。此为第二部分。
3. 后面的东西要写上表达式。即, \(9\ solver.*\) 此为第三部分。
4. 提取第二部分, 即使用 \2
提取ctc_loss
$ sed -e 's/\(.*ctc_loss\ =\ \)\(.*\)\((\*.*\)/\2/g'
0.162471
0.22051
0.333847
note:
1. 三下五去二, 上来先搞 \(........\) , 把第一部分东西放在.....那里。 即\(.*ctc_loss\ =\ \)。 注意,空格要使用反斜线。
2. 想提取的东西一般就用 \(.*\) 来搞。此为第二部分。
3. 后面的东西要写上表达式。即, \((\*.*\) 此为第三部分。 注意,有个*号是需要反斜的。
4. 提取第二部分, 即使用 \2
总结: 星号,空格都需要反斜。