各行に「年齢=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
少なくとも一度r
。s
また、代わりに後ろを見て主張、私は使用します避ける。良いことは、長さを変えることができ、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