テキストファイルをフィルタリングしたい。ただ各列が有効な浮動小数点数である行を印刷します。たとえば、
3 6 2 -4.2 21.2
3 x 4.2 21.2
3 2 2.2.2
最初の行だけが有効な浮動小数点数x
として渡されます。単に2.2.2
各セクションでチャンクを.splits()
実行するPythonスクリプトを書くことができますが、try/except
ファイルが大きいと速度が遅くなります。入力ファイルに不明な数の可変長列があり、科学的表記法を使用しません。awk
解決策がありますか?
ベストアンサー1
awk '
# skip any obvious stuff
/[^0-9. -]/ {next}
{
# test each field for a number
for (i=1; i<=NF; i++)
if ($i + 0 != $i)
next
print
}
'
これにより、科学表記の有効数字が区別されます。1.2e1 == 12