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

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,

grep -i null myfile.txt返回

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返回总匹配行,但我不知道如何正确格式化它以在前面添加total null count,我不知道如何添加行号。

我能做什么?


-n返回行号。

-i用于忽略大小写。仅在不需要大小写匹配时使用

1
2
3
4
$ grep -in null myfile.txt

2:example two null,
4:example four null,

awk组合以在匹配后打印出行号:

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


使用-n--line-number

查看man grep以获取更多选项。


或者使用awk代替:

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

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

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

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


grep找到行并输出行号,但不允许您"编程"其他内容。如果你想包含任意文本并做其他"编程",你可以使用awk,

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"

只是觉得我将来可以帮助你。要搜索多个字符串和输出行号并浏览输出,请键入:

egrep -ne 'null|three'

将会呈现:

1
2
3
2:example two null,  
3:example three,  
4:example four null,

egrep -ne 'null|three' | less

将以较少的会话显示输出

HTH