从包含字符串但不包含同一行中的另一个字符串的文件中提取行

从包含字符串但不包含同一行中的另一个字符串的文件中提取行

我在脚本中使用 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循环更快。

相关内容