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