0

基本的に、私は非常に大きなテキストファイルを持っており、各行には

tag=yyyyy;id=xxxxx;db_ref=zzzzz; 

私が望むのはIDをgrepすることですが、IDは長さと形式が変わる可能性があります.grep -oを使用してから「id =」にgrepを使用し、その後に続くすべてをセミコロンまで抽出できるかどうか疑問に思っていましたか?

4

6 に答える 6

2

あなたがすることができます:

$ grep -o 'id=[^;]*' file

そして、その部分を含めたくない場合はid=、肯定的な読みを使用できます。

$ grep -Po '(?<=id=)[^;]*' file
于 2013-03-11T14:19:29.043 に答える
0

grep経由:

grep -o 'id=[^;]*'

awk経由:

awk -F';' '{ print $2}' testlog
id=xxxxx

編集:後読みについては、sudo_Oの回答を参照してください。それはあなたの質問の要点です、IMO。

于 2013-03-11T14:20:54.513 に答える
0

この awk を試すことができます。また、1 行に複数の id= エントリがあり、誤検知が発生しない場合にも機能するはずです。...;pid=blabla;...

awk '/^id=/' RS=\; file
于 2013-03-11T22:06:25.367 に答える
0

次のことを試してください。

grep -oP 'id=\K[^;]*' file
于 2013-03-11T22:10:08.260 に答える
0

試す :

grep -Po "(?<=id=)[^;]*" file
于 2013-03-11T14:19:38.293 に答える
0
perl -lne 'print $1 if(/id=([^\;]*);/)' your_file

テスト済み:

> echo "tag=yyyyy;id=xxxxx;db_ref=zzzzz; "|perl -lne 'print $1 if(/id=([^\;]*);/)'
xxxxx
>
于 2013-03-12T10:57:21.173 に答える