我需要这样的东西:

grep ^"unwanted_word"XXXXXXXX

当前回答

我通过使用grep -vw“^/”排除了根(“/”)挂载点。

# cat /tmp/topfsfind.txt| head -4 |awk '{print $NF}'
/
/root/.m2
/root
/var

# cat /tmp/topfsfind.txt| head -4 |awk '{print $NF}' | grep -vw "^/"
/root/.m2
/root
/var

其他回答

-v选项将显示与模式不匹配的所有行。

grep -v ^unwanted_word

你可以使用grep的-v (for——invert-match)选项as:

grep -v "unwanted_word" file | grep XXXXXXXX

grep -v "unwanted_word" file将过滤包含unwanted_word的行,grep XXXXXXXX将只列出模式为XXXXXXXX的行。

编辑:

从您的注释中,看起来您想要列出所有没有unwanted_word的行。在这种情况下,你只需要:

grep -v 'unwanted_word' file

使用grep -v进行反向匹配:

grep -v "unwanted word" file pattern

我有一个目录,里面有很多文件。我想找到所有不包含字符串“加速”的文件,所以我成功地使用了以下命令:

grep -iL speedup *

我把这个问题理解为“如何匹配一个单词但排除另一个”,对此的一个解决方案是两个grep串联:第一个grep找到想要的“word1”,第二个grep排除“word2”:

grep "word1" | grep -v "word2"

在我的例子中:我需要区分“plot”和“#plot”,grep的“word”选项不会这样做(“#”不是字母数字)。