以下を含む行を探したいです。
- 0 amount
- 122,000,000 amount
- 50,000 amount
使ってみました。
grep -rhI " - * amount ".
しかし、以下を含むものは何でも出力されます。
-
含まれているかどうか
amount
問題は、私は文字列だけが欲しいということです
- * amount
これは*
その間のすべてを意味します- (here) amount
。 「-」のみを含む行が無視される場合は許可されます。
しかし、これはうまくいきません。
ベストアンサー1
*
0個以上と一致します。先行文字またはパターン。
これは- * amount
一致するという意味です。
- amount
- amount
- amount
- (等)
作成した数字を一致させるには、- [0-9,]+ amount
asパターンを使用してください。+
少なくとも前の正規表現に一致するように強制し、すべての[0-9,]
数字またはカンマに一致します。
次のファイルが提供されます。
- 0 amount
- 122,000,000 amount
- 50,000 amount
- amount
- amount
- some amount
これは働きます:
$ grep -E -e '- [0-9,]+ amount' file
- 0 amount
- 122,000,000 amount
- 50,000 amount
拡張正規表現演算子なので必須で、-E
そうでなければパターンのオプションが次に解釈されるため必須です(次の項目が入力に適用される正規表現であることを意味します)。いいえ。代わりに使用してください。+
-e
-
grep
-e
grep
-E
\{1,\}
+
パターンを線の始めと終わりに固定することもできます。
$ grep -E '^ - [0-9,]+ amount$' file
つまり、もはや-e
必要ではなく、以前と同様に、行が空白で始まり、ダッシュや数字などが続くことを保証します。文字列はamount
行の最後の項目でなければなりません(単語を行の末尾に固定するために使用されます$
)。