如何在没有字的情况下计算行数,其中word2 -bash

时间:2015-03-22 12:11:00

标签: linux bash

您好我有相关的问题 link

我有一个大文本文件,其中一些行包含单词"DataMeetingIs11",其中以下行包含单词"done"或注释。我的任务是计算所有这些线。例如,我想在没有"完成"单词

grep -A 1 DataMeetingIs11 your_file|fgrep -v -c

没有工作

2 个答案:

答案 0 :(得分:1)

您需要添加-P Perl-regexp参数才能实现上述目标。

grep -oPz '.*DataMeetingIs11.*(?=\n.*done)' file | wc -l

如有必要,添加字边界。

grep -oPz '.*\bDataMeetingIs11\b.*(?=\n.*\bdone\b)' file | wc -l

示例:

$ cat fa
 DataMeetingIs11
done
foo
bar
 DataMeetingIs11
not 
 DataMeetingIs11
fio done
$ grep -oPz '.*DataMeetingIs11.*(?=\n.*done)' fa | wc -l
2

答案 1 :(得分:0)

通过使用awk脚本,您也可以这样做:

#!/usr/bin/awk -f

$0 ~ /DataMeetingIs11/ {
    line=$0
    next
}
$0 ~ /done/ && line != "" {
    count++
}
{
    line = ""
}
END {
    print count
}

示例:

$ cat file
blabla
 DataMeetingIs11
done
something
 DataMeetingIs11
alt
 DataMeetingIs11
it's done

此文件的执行结果:

$ ./DataMeetingIs11.awk file
2