基本上我有一个非常大的文本文件,每一行都包含
tag=yyyyy;id=xxxxx;db_ref=zzzzz;
我想要的是 grep 出 id,但 id 的长度和形式可以改变,我想知道是否可以使用 grep -o 然后 grep for "id=" 然后提取它之后的所有内容,直到分号?
基本上我有一个非常大的文本文件,每一行都包含
tag=yyyyy;id=xxxxx;db_ref=zzzzz;
我想要的是 grep 出 id,但 id 的长度和形式可以改变,我想知道是否可以使用 grep -o 然后 grep for "id=" 然后提取它之后的所有内容,直到分号?
尝试 :
grep -Po "(?<=id=)[^;]*" file
通过 grep:
grep -o 'id=[^;]*'
通过 awk:
awk -F';' '{ print $2}' testlog
id=xxxxx
编辑:查看 sudo_O 的后视答案。IMO,这更符合您的问题。
你可以试试这个awk。如果每行有多个 id= 条目,它也应该工作,并且它不会给出误报...;pid=blabla;...
awk '/^id=/' RS=\; file
尝试以下操作:
grep -oP 'id=\K[^;]*' file
perl -lne 'print $1 if(/id=([^\;]*);/)' your_file
测试:
> echo "tag=yyyyy;id=xxxxx;db_ref=zzzzz; "|perl -lne 'print $1 if(/id=([^\;]*);/)'
xxxxx
>