
私はUbuntu 16.04を使用しています
試しています:
grep '.*' file1
出力:
file nu-mber o-ne second string
試しています:grep '.+' file1
出力がない
なぜプラスが機能しないのですか?
答え1
伝える必要があるgrep
拡張正規表現を使用しています:
grep -E '.+' file1
標準基本的な正規表現(grep
withoutで使用される場合-E
)同等の拡張正規表現 +
演算子は、\{1,\}
一部の実装 (GNU など) では\+
拡張機能として認識されます (常に を使用できます..*
)。
(この特定のケースでは、オプションを使用しない場合に正規表現に一致する部分文字列を探しているため、はとgrep -E .+
同等であることに注意してください。多くのシステムではは と同等のコマンドとして提供されていますが、grep -E .
-x
egrep
grep -E
グレアム 指摘しているこれは廃止。
答え2
GNU grep (Ubuntu のデフォルト) では、バックスラッシュを使用して拡張動作を有効にすることもできます。例:
grep '.\+' file1
答え3
+ は拡張正規表現メタ文字だと思います。 を使用してみてくださいegrep
。