我在脚本中使用 grep 来获取包含特定字符串的文件的文件名列表。基本指令是 do 循环中的这条指令:
if grep -q "$str" Inputs/inp$n; then
echo inp$n >> file_list.txt
fi
像这样获取线路本身以进行验证:
grep "$str" Files/inp$n >> lines.txt
我想做的是防止在查找某些字符串时输出中出现一些误报。我想获取包含“abc#”的行,其中“#”是一个数字(可能是多个数字),但我不希望在搜索字符串“abc”时出现特定单词“abcde”。请注意,“abc#”和“abcde”不出现在这些文件的同一行中。
有没有办法告诉 grep 忽略包含“abc”的行中包含“abcde”的行?
答案1
$ grep -l 'abc[0-9]' Inputs/inp*
开关-l
将列出匹配的文件。提供一组文件进行搜索而不是迭代可能比迭代 shellfor
循环更快。