了解 grep --label=

erc*_*rch 6 command-line grep options

我正在寻找如何grep --label=LABEL工作的解释:也许有人可以给我一个[或两个]例子来说明--label=是什么。

我了解应该做什么grepzgrep应该做什么——后者在以下条目--label=中提到info page

...在实现诸如“zgrep”之类的工具时特别有用

到目前为止,我发现的 98% 是从中复制/粘贴的info grep,另外 2% 的命令嵌入在我不理解的脚本中。

Hau*_*ing 9

此功能使阅读输出grep更容易。如果您想检查grep无法直接读取的数据,那么您最终可能会使用管道来馈送 grep,而不是创建一个grep可以读取的临时文件。如果您不想要一个临时文件(例如因为它会很大),那么如果没有--label您将遇到grep无法打印在哪个文件中找到匹配项的信息的问题。

这个

echo $'fubar\nbaz\nbat' | grep --label=inputfile -H a
inputfile:fubar
inputfile:baz
inputfile:bat
Run Code Online (Sandbox Code Playgroud)

相当于

echo $'fubar\nbaz\nbat' > inputfile
grep -H a inputfile
inputfile:fubar
inputfile:baz
inputfile:bat
Run Code Online (Sandbox Code Playgroud)

如果没有--label第一种方法将无法工作(即不提供所需的输出),因此您必须执行以下操作:

echo $'fubar\nbaz\nbat' | grep a | awk '{print "inputfile:" $0}'
Run Code Online (Sandbox Code Playgroud)

但这不会在控制台中提供匹配突出显示。

  • 非常感谢您的回答 - 现在说得通了!对于其他人,我可以补充一下,当使用 `echo` 时,字符串中的 `\n` 代表 `newline` [我自己也不确定,这有点困惑]。 (2认同)