你好我有个问题
link
我有一个大的文本文件,其中有些行包含单词"DataMeetingIs11",而下面的行包含单词"done"或注释。我的任务是数一数这些行。例如,我想在没有“完成”字的情况下计算这几行

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

不起作用

最佳答案

您需要添加-PPerl 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

10-05 23:46