2つの文字列パターン間の数値抽出

2つの文字列パターン間の数値抽出

各行に「年齢=22歳、キー=6フィート」タイプの式を含むファイルがありますが、年齢とキー数だけを抽出したいと思います。

頑張りました

grep -oP  '(?<=Age=)[^years]+' $f | awk '{ printf "%d \n",$1; }

そして年齢を正確に把握してください。年齢と身長を同時に知る方法はありますか?入れ子になったパターンを一致させようとすると、高さだけが得られます。

私が試したパターンはこれです

grep -oP  '(?<=Age=)[^years]+.+(?<=Height=)[^feet]+' $f | awk '{ printf "%d \n",$1; }

ベストアンサー1

これはあなたが思うようには機能せず、ただ偶然に働きます。

[^years]+

意味、一致すべての文字とは別に y、、、、eおよびa少なくとも一度rs

また、代わりに後ろを見て主張、私は使用します避ける。良いことは、長さを変えることができ、Age簡単に一致させることができることですHeight

(Age|Height)=\K

次に、否定一致を実行するのではなく、数字のみ一致する肯定一致を使用します。

grep -Po '(Age|Height)=\K\d+'

-

$ echo "Age=22 and Height=6" | grep -Po '(Age|Height)=\K\d+'
22
6

おすすめ記事