从给定的目录中,我想确定哪些文件:
- 包含
pattern
- 但不在第 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
只会匹配第一个文件的第一行。