我有一个结果如下的文件:
7499 (map g (range 1 1000)),(2 2 4 4 4 4 4 4 4)
50 (map g (range 1 1000)),(2 2 4 4 4 4 4 4 42)
50 (map g (range 1 1000)),(2 2 4 4 4 4 4 4 29)
41 (map g (range 1 1000)),(2 2 4 4 4 4 4 4 11)
23 (map g (range 1 1000)),(2 2 4 4 4 4 4 4 4)
3 (map g (range 1 1000)),(2 2 4 4 4 4 4 4 5)
100330 (map g (range 1 1000)),(2 2 4 4 4 4 4 4 6)
我对sed很新,但还没有设法得到我想要的输出,我希望如此:
2 2 4 4 4 4 4 4 4
2 2 4 4 4 4 4 4 42
2 2 4 4 4 4 4 4 29
2 2 4 4 4 4 4 4 11
2 2 4 4 4 4 4 4 4
2 2 4 4 4 4 4 4 5
2 2 4 4 4 4 4 4 6
有什么想法吗?
答案 0 :(得分:3)
您可以使用此grep
:
grep -oP '\(\K(\d+\s*)*(?=\))' file
2 2 4 4 4 4 4 4 4
2 2 4 4 4 4 4 4 42
2 2 4 4 4 4 4 4 29
2 2 4 4 4 4 4 4 11
2 2 4 4 4 4 4 4 4
2 2 4 4 4 4 4 4 5
2 2 4 4 4 4 4 4 6
<强>解释强>
\(
- 匹配文字(
\K
- 重置比赛(\d+\s*)*
匹配0个或更多个数字组合,后跟0或更多空格(?=\))
- 预见确保后面跟着文字)
-P
- 在grep中使用PCRE正则表达式-o
- 仅在输入中输出匹配的字符串答案 1 :(得分:1)
使用GNU grep:
grep -oP '\(\K[0-9 ]+' file
输出:
2 2 4 4 4 4 4 4 4 2 2 4 4 4 4 4 4 42 2 2 4 4 4 4 4 4 29 2 2 4 4 4 4 4 4 11 2 2 4 4 4 4 4 4 4 2 2 4 4 4 4 4 4 5 2 2 4 4 4 4 4 4 6