如何格式化我的grep输出以显示行尾的行号,以及命中计数?

Lon*_*don 364 unix linux bash grep

我正在使用grep来匹配文件中的字符串.这是一个示例文件:

example one,
example two null,
example three,
example four null,
Run Code Online (Sandbox Code Playgroud)

grep -i null myfile.txt 回报

example two null,
example four null,
Run Code Online (Sandbox Code Playgroud)

如何将匹配的行与其行号一起返回,如下所示:

  example two null, - Line number : 2
  example four null, - Line number : 4
  Total null count : 2
Run Code Online (Sandbox Code Playgroud)

我知道-c返回总匹配的行,但我不知道如何正确格式化以total null count在前面添加,我不知道如何添加行号.

我能做什么?

dog*_*ane 576

-n 返回行号.

-i是为了忽略大小写.仅在不需要大小写匹配时使用

$ grep -in null myfile.txt

2:example two null,
4:example four null,
Run Code Online (Sandbox Code Playgroud)

结合使用awk后打印出的行号:

$ grep -in null myfile.txt | awk -F: '{print $2" - Line number : "$1}'

example two null, - Line number : 2
example four null, - Line number : 4
Run Code Online (Sandbox Code Playgroud)

使用命令替换打印出总空计数:

$ echo "Total null count :" $(grep -ic null myfile.txt)

Total null count : 2
Run Code Online (Sandbox Code Playgroud)

  • ...那些说‘-ni’的骑士,你就是这样记住这个把戏的 (2认同)

And*_*ter 54

使用-n--line-number.

查看man grep更多选项.

  • 并不总是懒惰,(但有时候),通常是新Linux用户无法理解手册页.(他们可以_seem_神秘) (17认同)
  • 新的linux用户懒得阅读手册页.但是,如果他们使用足够的Linux,他们将习惯它:)这是超级有用的:) (3认同)

Wak*_*iko 6

用于grep -n -i null myfile.txt输出每个匹配前面的行号.

我不认为grep有一个开关来打印匹配的总行数,但你可以将grep的输出管道输出到wc来实现:

grep -n -i null myfile.txt | wc -l
Run Code Online (Sandbox Code Playgroud)

  • -c将打印匹配的总行数 (3认同)

Zso*_*kai 6

或者awk改为使用:

awk '/null/ { counter++; printf("%s%s%i\n",$0, " - Line number: ", NR)} END {print "Total null count: " counter}' file
Run Code Online (Sandbox Code Playgroud)