我想在使用grep或whatnot找到的特定单词后提取下一个单词/数字。
举一个例子,我可以说这是stdout中的内容
string-a0 match-a1 string-a2 string-a3
string-b0 string-b1 match-b2 string-b3
match-c0 string-c1 string-c2 string-c3
我想留下这个
string-a2
string-b3
string-c1
请注意match-a1 != match-b2 != match-c0
修改
一个具体的例子......
stdout就是这个
open 0.23 date ...
close 1.52 date ...
open 2.34 date ...
close 5.92 date ...
open 10.78 date ...
close 24.21 date ...
total 45.3
我正在搜索open
,close
和total
这样的字词,因此输出应为
0.23
1.52
2.34
5.92
10.78
24.21
45.3
答案 0 :(得分:1)
这与一般情况不符,但适用于您的示例:
awk '/^open|^close|^total/{print $2}' input
对于一般情况,如果您定义"字符串"是基于空白,也许你想要:
tr -s ' \n' \\n < input | awk 'p{print; p=0} {p=/^open|^close|^total/}'
答案 1 :(得分:1)
您可以使用此awk在搜索词后打印下一个单词:
awk -v s='^(open|close|total)$' '{for (i=1; i<NF; i++) if ($i ~ s) print $(i+1)}'
0.23
1.52
2.34
5.92
10.78
24.21
45.3