我怎样才能格式化我的grep输出在行尾显示行号,还有命中计数?

我正在使用grep来匹配文件中的string。 这是一个示例文件:

example one, example two null, example three, example four null, 

grep -i null myfile.txt返回

 example two null, example four null, 

我怎样才能返回匹配的行与他们的行号,如下所示:

  example two null, - Line number : 2 example four null, - Line number : 4 Total null count : 2 

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

我能做什么?

-n返回行号。

-i是无视情况。 只有在不需要大小写匹配的情况下才能使用

 $ grep -in null myfile.txt 2:example two null, 4:example four null, 

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 

使用命令replace打印出总的空数:

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

使用-n--line-number

检查man grep有更多的select。

或者用awk代替:

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

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

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

 grep -n -i null myfile.txt | wc -l 

grepfind行并输出行号,但不让你“编程”其他的东西。 如果你想包含任意文本和其他“编程”,你可以使用awk,

 $ awk '/null/{c++;print $0," - Line number: "NR}END{print "Total null count: "c}' file example two null, - Line number: 2 example four null, - Line number: 4 Total null count: 2 

或者只使用shell(bash / ksh)

 c=0 while read -r line do case "$line" in *null* ) ( ((c++)) echo "$line - Line number $c" ;; esac done < "file" echo "total count: $c" 

或在perl(完整性…):

 perl -npe 'chomp; /null/ and print "$_ - Line number : $.\n" and $i++;$_="";END{print "Total null count : $i\n"}' 

请参阅linux链接http://linuxcommand.org/man_pages/grep1.html

用于显示行号,代码行和文件在terminal或cmd中使用此命令,GitBash(由terminal提供支持)

 grep -irn "YourStringToBeSearch"