フィラーをgrepして浮動小数点に署名する正規表現

フィラーをgrepして浮動小数点に署名する正規表現

次のように行から最後の列を抽出したいと思います。

880.952         NAV_Y                uSimMarine      -146.17516

数値は常に負ではなく固定長ではありません(つまり、小数点以下の桁数は必ずしも同じではありません)。

これは私にほとんどの内容を明確にします。

grep -E "\-?[[:digit:]]{1,3}\.[[:digit:]]{0,5}"

ただし、最初の列の数字とも一致します。

最初の列の一致を削除するために行の末尾を含めるように変更した場合:

grep -E "[[:digit:]]{1,3}\.[[:digit:]]{0,5}$"

一致するものが1つもなく、わかりません。

私がここで何を見逃しているのでしょうか?

ベストアンサー1

行末に式を固定する:

grep -E "\-?[[:digit:]]{1,3}\.[[:digit:]]{0,5}$"

キャプチャされたグループのみを返すようにPCREオプションを追加すると、一致の例が表示され、目的の一致-oが返されます。

grep -oE "(\-?[[:digit:]]{1,3}\.[[:digit:]]{0,5}$)"

-146.17516

同様に、オプションの末尾の空白を含むファイルの行に一致する項目をキャプチャするには、次のように\s*追加します。

grep -oE "(\-?[[:digit:]]{1,3}\.[[:digit:]]{0,5}\s*$)"

おすすめ記事