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

时间:2010-10-19 12:06:02

标签: linux bash unix grep

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

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,我不知道如何添加行号。

我该怎么办?

8 个答案:

答案 0 :(得分:535)

-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

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

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

Total null count : 2

答案 1 :(得分:51)

使用-n--line-number

查看man grep以了解更多选项。

答案 2 :(得分:6)

或者改为使用awk

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

答案 3 :(得分:5)

使用grep -n -i null myfile.txt输出每场比赛前的行号。

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

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

答案 4 :(得分:3)

grep找到行并输出行号,但不允许您“编程”其他内容。如果要包含任意文本并执行其他“编程”,可以使用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"

答案 5 :(得分:2)

或perl(完整性......):

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

答案 6 :(得分:1)

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

用于显示行号,代码行和文件在终端或cmd中使用此命令,GitBash(由终端供电)

grep -irn "YourStringToBeSearch"

答案 7 :(得分:0)

只是以为我会在将来对您有所帮助。要搜索多个字符串和输出行号并浏览输出,请输入:

egrep -ne'null | three'

将显示:
2:示例两个null,
3:示例三,
4:示例四个null,

egrep -ne'null | three'|更少

将在较少的会话中显示输出

HTH 俊