だから私はこのファイルを持っていて、特定のフレーズの後にゼロ以外の数字が続く行を探したいと思います。 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)」部分は否定予測で、「後に単語文字が来ない」を意味します。最後の条件を変更すると、必要なフィルタリングを実行できます。