>我有一个文件,结果如下:
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
有什么想法吗?
您可以使用
此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
- 在输入中仅输出匹配的字符串
使用 GNU grep:
grep -oP '(K[0-9 ]+' file
输出:
2 2 4 4 4 4 4 4 42 2 4 4 4 4 4 4 422 2 4 4 4 4 4 4 292 2 4 4 4 4 4 4 112 2 4 4 4 4 4 4 42 2 4 4 4 4 4 4 52 2 4 4 4 4 4 4 6