如何使用grep获取包含-R的行

如何使用grep获取包含-R的行

如何使用 grep 在文件中找到“-R”?我尝试grep "-R" *.GNU获取包含 -R 的行,但它什么也没返回。

答案1

尝试:

grep -- -R *.GNU

表示--选项结束,因此-R被视为参数而不是选项grep

答案2

相当多的 GNU 工具支持一个选项,您可以在其中告诉工具(rmgrepls等)您不再希望它继续向自身解析命令行选项。通过用双破折号标记命令行输入可以方便地使用此选项--

您可以在中阅读更多相关信息GNU CoreUtils 常见问题解答。具体来说,本节的标题为: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也有效。告诉-egrep 遵循一个搜索模式。

备择方案

grep '[-]R' *.GNU

[-]是一个字符类。由于该类中只有一个字符,因此它必须与连字符 ( -) 匹配。

grep '.\?-R' *.GNU

问号告诉 grep 它前面的字符是可选的。匹配.任何字符。

grep '\(\)-R' *.GNU

括号内为空团体

答案4

尝试像这样转义破折号

grep "\-R" *.GNU

相关内容