linux - 如何理解带有 “--” 符号的这个奇怪的 grep 命令

标签 linux shell grep

当运行下面的grep命令时我得到了奇怪的结果,首先“1.txt”的内容是这样的:

401 f
-- -----

然后当使用cat 1.txt | grep -v -- --,结果为401 f,命令cat 1.txt | grep -v -- -,结果也是401 f。我知道第一个字段中的 -- 是 grep 的过滤模式,所以我认为第二个字段中的 --- 可能都意味着标准输出,对吗?然后我运行 cat 1.txt | grep -v --,这里我省略了标准输出,但它是错误的,信息是 Try 'grep --help' for more information。同时我还运行 cat 1.txt | grep -v -,这有效,结果是 401 f

为了进一步了解 grep 中 --- 之间的区别,我运行 cat 1.txt | grep --,它显示 Try 'grep --help' for more informationcat 1.txt | grep - 获取结果 -- -----.

顺便说一句,我试过了

  1. cat 1.txt | grep -v '--' --
  2. cat 1.txt | grep -v '--' -
  3. cat 1.txt | grep -v '--'
  4. cat 1.txt | grep -v '-'
  5. cat 1.txt | grep '--'
  6. cat 1.txt | grep '-'

最后,我得到了相同的对应结果。

我的问题可能是

  1. 第二个字段的---有什么区别?

  2. 为什么我不能使用 -- 模式在行中得到 -- -----

最佳答案

-- 在使用 getopt 的实用程序中用于指示选项结束。

来自manual :

The special argument "--" forces an end of option-scanning regardless of the scanning mode.

因此在实践中,您的第一个 -- 参数将被忽略。如果你想为 -- 做 grep,你需要 grep .... -- --

关于linux - 如何理解带有 “--” 符号的这个奇怪的 grep 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36528008/

相关文章:

linux - 配置 Apache 以允许禁止目录列表

java - 如何通过runTime.exec()使用涉及 ">"的linux命令

linux - 如何读取附加到(又名,如 tail -f)的文件的 [非阻塞] 文件描述符?

bash - 当用反斜杠分割行时是否可以使用注释?

linux - 使用 grep 从另一个 linux 脚本检测 linux bash 脚本中的注释行

linux - 从我之前离开的地方拖尾文件?

bash - 遍历 Ubuntu 16 中的文件夹文件

linux - Bash 无法识别文件测试操作符

regex - 当 'cut' 通过管道传输几行与 grep 不同的模式时的解决方法?

ssh - 使用awk解析ssh命令的输出