How can I format my grep output to show line numbers at the end of the line, and also the hit count?
我正在使用grep来匹配文件中的字符串。 这是一个示例文件:
1 2 3 4 | example one, example two null, example three, example four null, |
1 2 | example two null, example four null, |
如何将匹配的行与其行号一起返回,如下所示:
1 2 3 | example two null, - Line number : 2 example four null, - Line number : 4 Total null count : 2 |
我知道-c返回总匹配行,但我不知道如何正确格式化它以在前面添加
我能做什么?
1 2 3 4 | $ grep -in null myfile.txt 2:example two null, 4:example four null, |
与
1 2 3 4 | $ grep -in null myfile.txt | awk -F: '{print $2" - Line number :"$1}' example two null, - Line number : 2 example four null, - Line number : 4 |
使用命令替换打印出总空计数:
1 2 3 | $ echo"Total null count :" $(grep -ic null myfile.txt) Total null count : 2 |
使用
查看
或者使用
1 2 | awk '/null/ { counter++; printf("%s%s%i ",$0," - Line number:", NR)} END {print"Total null count:" counter}' file |
使用
我不认为grep有一个开关来打印匹配的总行数,但你可以将grep的输出管道输出到wc来实现:
1 | grep -n -i null myfile.txt | wc -l |
1 2 3 4 | $ 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)
1 2 3 4 5 6 7 8 9 10 11 | 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中(为了完整性......):
1 2 3 | perl -npe 'chomp; /null/ and print"$_ - Line number : $. " and $i++;$_="";END{print"Total null count : $i "}' |
请参阅此链接以获取linux命令linux
http://linuxcommand.org/man_pages/grep1.html
用于显示行号,代码行和文件在终端或cmd中使用此命令,GitBash(由终端供电)
1 | grep -irn"YourStringToBeSearch" |
只是觉得我将来可以帮助你。要搜索多个字符串和输出行号并浏览输出,请键入:
将会呈现:
1 2 3 | 2:example two null, 3:example three, 4:example four null, |
将以较少的会话显示输出
HTH
君