2016-05-01 6 views
2

私はunixの特定の列のためのファイルに数値以外のレコードの数を取得したいが含まれています。
私が試してみました:は非数値

awk -F"|" ' $1~ "^[0-9]*$" { print $1 }' File |wc -l

しかし、運を。
ヘルプ。

+0

のために失敗します。コマンドを試しましたか? – Samik

+0

1列目の数値を確認しています。また、出力を別のプログラムにパイプするのではなく、 'awk'を使ってカウントすることもできます。 –

+0

数字以外のものを数えたいのですが、数値として$ 1を見ていますか? –

答えて

0
awk -F'|' '{print $1}' File | awk '/^[0-9]$/' | wc -l 
+0

これを次のように変更することができます: 'awk -F '|' '$ 1〜/^[0-9] $/{C++}; END {print c}' File' – andlrc

+0

ありがとうございました。 – Midhun

3

数値をチェックするための唯一の賢明な方法は、数学の比較を行うことです。^[0-9]$と比較

awk -F"|" '($1=="") || ($1+0 != $1){print $1; cnt++} END{print cnt+0}' File 

は、あなたが何を取得している浮動小数点または指数の数字

+0

1列の代わりに、これは多くの列で動作するように一般化できますか?私はそれがちょうど列1を見ていることを見るので、私はカットコマンドを使用して一度に1つの列を得ることができると思うので、おそらくそれは私の質問への1つの答えです。 –

+0

もう1つの拡張機能:空のフィールドを無視する方法:つまり、フィールド区切り文字の間に何も表示されない場合は、OKです。 LHSテストを単に削除するだけで、うまくいきませんでした。($ == "")|| –

+0

はい、複数のフィールドで作業し、空のフィールドを無視するのは簡単です。新しい質問を投稿してください。 –