特定の数字を持つ行を見つける方法

特定の数字を持つ行を見つける方法

だから私はこのファイルを持っていて、特定のフレーズの後にゼロ以外の数字が続く行を探したいと思います。 grepを使用しようとしていますが、ゼロを無視するようにフォーマットする方法がわかりません。 1行は次のとおりです。

2009-12-05 : Reindexing 100: [result]
2009-12-07 : Reindexing 0: [result]

私は最初の行だけが欲しい。

よろしくお願いします。

答え1

Reindexingゼロ以外の数字が続く最初の構文を取得するには、(GNU grep)を使用します。

grep -m1 'Reindexing [1-9]' < input

答え2

「ゼロ以外の数値」を意味する場合、つまり次のことを処理したい場合:

  • 負の数、
  • 分数 - 0 < n < 1を含む(「0」で始まる)

grepよりも強力なものが必要です。たとえば、

echo '2009-12-05 : Reindexing -0.7: [result]' | perl -ne 'print if /Reindexing -?(\d+(\.\d+)?+)(?!\w)/ and $1!=0'

このソリューションは、数値ではなく「100abc」などの文字列も除外します。 「(?!\w)」部分は否定予測で、「後に単語文字が来ない」を意味します。最後の条件を変更すると、必要なフィルタリングを実行できます。

関連情報