
grepを使ってファイル内の「-R」を見つける方法は?grep "-R" *.GNU
-Rを含む行を取得しようとしましたが、何も返されませんでした。
答え1
努力する:
grep -- -R *.GNU
--
オプションの終わりを示す-R
ため、オプションではなくパラメータとして扱われます。grep
答え2
多くのGNUツールは、コマンドラインオプションを独自に解析しないようにツール(など)に通知するオプションをサポートしていますrm
。このオプションは、コマンドライン入力に二重ダッシュを表示することで便利に使用できます。grep
ls
--
これについての詳細は、以下で読むことができます。GNU CoreUtils FAQ。具体的には、このセクションのタイトルは次のとおりです。11ダッシュで始まるファイルを削除する方法。
これにより、-
ダッシュ(つまり)で始まるファイルをコマンドライン引数として渡すことができます。
はい
rm ./-stuff
rm /full/path/-stuff
rm -- -stuff
mv ./-stuff differentstuff
mv -- -stuff differentstuff
答え3
最も一般的な方法
grep -- -R *.GNU
grepのいくつかのバリエーションで動作します。--
grepにフラグ検索を停止するように指示します。
grep -e -R *.GNU
また動作します。-e
grepに検索パターンに従うように指示します。
代替
grep '[-]R' *.GNU
[-]
はキャラクタークラス。このクラスには文字が1つしかないので、ハイフン(-
)と一致する必要があります。
grep '.\?-R' *.GNU
疑問符は、grepに、前の文字がオプションであることを示します。.
すべての文字と一致します。
grep '\(\)-R' *.GNU
角かっこは空です。グループ。
答え4
このようにダッシュを脱出してみてください。
grep "\-R" *.GNU