我试图 grep 仅用于括号内的一系列数字。我当前的 grep 将在括号内提取所有内容,但我只想要[0001-9999]
. 我怎样才能修复我的 grep 来做到这一点?
我已经尝试了几个不同的版本,(?<=\()[0001-9999](?=\))
但他们没有返回任何东西
$ cat /tmp/output
This is R3trans version 6.26 (release 745 - 24.03.17 - 20:17:03).
R3trans finished (0000).
R3trans finished (0001).
R3trans finished (9999).
05.03.2018 16:30:02
enserver, EnqueueServer, RED, Running, 2018 02 27 09:15:52, 151:14:10, 19069
电流输出
$ cat /tmp/output | grep -Po '(?<=\().*(?=\))'
release 745 - 24.03.17 - 20:17:03
0000
0001
9999
期望的输出
$ cat /tmp/output | grep -Po '(?<=\().*(?=\))'
0001
9999
达到目标的两种方法:
grep
方法(有Perl支持):GNU
awk
方法:输出:
这似乎有效:
可读性较差,但只有一个
grep
:显然你有数字约束。如果是这种情况,为什么不使用编程语言呢?例子: