Regex grep能显示我想要的唯一结果吗
我有这样的数据Regex grep能显示我想要的唯一结果吗,regex,linux,unix,grep,cygwin,Regex,Linux,Unix,Grep,Cygwin,我有这样的数据 tatusx2.atc?beginnum=0;8pctgRB Mwdf fgEio"text1"text4"text tatqsx3.atc?beginnum=1;8pctgRBwsaNezxio"text2 tatssx4.atc?beginnum=2;8pctgsvMALNejkio"data2 tatksx4.atc?beginnum=1;8pctgxdfALNebfio"text3 tatzsx5.atc?beginnum=3;8pwerRBMALNetior"datac
tatusx2.atc?beginnum=0;8pctgRB Mwdf fgEio"text1"text4"text
tatqsx3.atc?beginnum=1;8pctgRBwsaNezxio"text2
tatssx4.atc?beginnum=2;8pctgsvMALNejkio"data2
tatksx4.atc?beginnum=1;8pctgxdfALNebfio"text3
tatzsx5.atc?beginnum=3;8pwerRBMALNetior"datac
如何只获取数据之间;及"
我尝试了grep-oP';*?”文件
,并得到了输出:
;8pctgRBMwdffgEio"
;8pctgRBwsaNezxio"
;8pctgsvMALNejkio"
;8pctgxdfALNebfio"
;8pwerRBMALNetior"
但我期望的结果是:
8pctgRB Mwdf fgEio
8pctgRBwsaNezxio
8pctgsvMALNejkio
8pctgxdfALNebfio
8pwerRBMALNetior
编写所需表达式的可读性更高的方法是:
grep -oP '(?<=;).*(?=")' file
使用?=
将获取以开头的字符串但是使用
之后,您可以从索引开始。类似地,指定了结束字符串标记
这里是建议的。您需要使用lookahead和lookbehind正则表达式
grep-oP'(?PERL正则表达式显然是实验性的,
这在手册中已经存在了很长时间了。如果它们至少可以添加一些不起作用的情况,肯定会有所帮助。我到目前为止还没有遇到过任何情况。此外,这可以简化为grep-oP';\K[^”]+(?=”
甚至grep-oP';\K[^”]+“
根据usecaseHi@azmath,它在这里遇到了一个问题,如果数据是tatusx2.atc?beginnum=0;8pctgrbmwdfgeio“text1”text9“text10”textn
,它将返回输出8pctgrbmwdfgeio“text1”text9“text10”
嗨,azmath,数据中有一些空格怎么样?
-o --only-matching to the print only the matched parts of a matching line
-P --perl-regexp