查找包含字符串但不在正确行上的文件

查找包含字符串但不在正确行上的文件

从给定的目录中,我想确定哪些文件:

  1. 包含pattern
  2. 但不在第 1 行

我知道如何做第 1 部分——grep -nHRF [pattern] [path]但是,我希望根据与匹配pattern但未出现在第 1 行的内容进行过滤。

答案1

就像是:

grep -n 'pattern' path | grep -v ':1:'

答案2

使用sed地址范围:

sed -n '2,/pattern/p' file

pattern它将从文件的第二行开始打印匹配的行。

答案3

grep -nHRF pattern path但如果没有第 1 行,使用 GNU sed 则会是:

shopt -s nullglob globstar
for f in path/**; do
    sed -n '1n; /pattern/{F;=;p}' "$f"
done | paste -d: - - -

您需要对文件进行迭代,否则=将输出所有文件的所有行的累积行号,并且1n只会匹配第一个文件的第一行。

相关内容