“grep -c ^b example”和“grep ^b example| cat –n”有什么区别?

“grep -c ^b example”和“grep ^b example| cat –n”有什么区别?

我正在尝试更好地学习命令行,并想知道这两个命令之间有什么区别。

grep -c ^b example  

grep ^b example| cat –n

答案1

嗯,根据到手册, grep:

搜索图案每一个文件。默认情况下,grep打印匹配的行。

并带有-c标志:

-c, --count

抑制正常输出;相反,打印每个输入文件的匹配行数。

因此,grep -c ^b example打印数字(计数)与模式匹配的行,同时grep ^b example打印行本身。

至于cat它被描述为

连接文件并在标准输出上打印

-n标志的作用是:

-n, --number    

对所有输出行进行编号

给定管道且没有文件名,cat从管道读取,因此输出是 的输出grep,并添加了行号。因此grep ^b example| cat –n打印所有匹配的行,并编号。


这与 不同grep -n ^b example,其中grep添加了匹配的行号。grep知道原始文件的行号,而cat只能看到输出grep并相应地对行进行编号。

所以,给定输入文件

$ cat example 
bar
foo
basf

我们有:

$ grep -c ^b example 
2

$ grep ^b example |cat -n
     1  bar
     2  basf

$ grep -n ^b example
1:bar
3:basf

答案2

好的命令:

  1. grep -c ^b example:输出以 letter 开头的行的匹配行数b,以及

  2. grep ^b example | cat -n:将grep命令的结果传递给cat命令并列出它们的行号。-ncat它们与行号一起列出的力量。

例子:

example.txt 内容:

media sound3
media sound1
media sound2
find sound -type f -name sound[0-9] -printf 'media %f\n' > file.txt
find sound -type f -name sound[0-9] -exec bash -c 'echo media bash >> file.txt' {} \;
find sound -type f -name sound[0-9] -exec bash -c "f='{}'; echo media $( basename ${f}) >> file.txt" \;

(1) 的结果:

3

(2) 的结果:

1   media sound3
2   media sound1
3   media sound2

相关内容