我有数据
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 ';.*?"' file
并得到了输出:
;8pctgRBMwdffgEio"
;8pctgRBwsaNezxio"
;8pctgsvMALNejkio"
;8pctgxdfALNebfio"
;8pwerRBMALNetior"
但我想要的输出是:
8pctgRB Mwdf fgEio
8pctgRBwsaNezxio
8pctgsvMALNejkio
8pctgxdfALNebfio
8pwerRBMALNetior
答案 0 :(得分:1)
编写所需表达式的更易读的方法是:
grep -oP '(?<=;).*(?=")' file
并将获得所需的结果。 PERL正则表达式显然是实验性的,但某些模式可以毫无问题地工作。
正在使用以下选项:
-o --only-matching to the print only the matched parts of a matching line
-P --perl-regexp
使用?=;
会获得以; 开头的字符串,但使用>
后,您可以从索引处开始。同样,指定了结束字符串标记。
答案 1 :(得分:1)