为什么添加冒号会破坏这个 grep 模式?

为什么添加冒号会破坏这个 grep 模式?

我使用 执行了搜索grep,但它没有像我预期的那样工作。我的文件中有以下几行:

blacklists/redirector/domains:needyoutube.com
lacklists/redirector/domains:openyoutube.com
blacklists/redirector/domains:proxy-youtube.com
blacklists/redirector/domains:proxytoyoutube.com
blacklists/redirector/domains:streamyoutube.com
blacklists/redirector/domains:unblockyoutube.com

当我跑步时:

grep ':youtube.com'

我没有得到任何结果。以下作品:

grep 'youtube.com'

如何避开冒号 ( :)?反斜杠(grep '\:youtube.com')不起作用。我使用 RHEL 5、grep (GNU grep) 2.5.1。

更新:我忘记了我想要 grep 的条目,这些条目也存在:

./blacklists/movies/domains:youtube.com
./blacklists/movies/domains:youtube.com.br

我只想获取包含确切域名的字段。所以我想获得链接到 youtube.com 的黑名单,所以我使用“:youtube.com”。

从上面的列表(youtube.com、youtube.com.br)中,我只应该获得 youtube.com,但我什么也没得到。

我说得不够清楚,抱歉。

答案1

Grep 做得很好。该文件不包含任何带有“:youtube.com”的行。

如果你想匹配所有这些行,:你可以使用

grep ":.*youtube\.com"

更新:

当您更新问题时,我需要尝试回答第二部分。

从上面的列表(youtube.com、youtube.com.br)中,我只应该获得 youtube.com,但我什么也没得到。

grep ':youtube.com'实际上做了你需要的。如果它是一个路径-R选项可以帮助你。

答案2

看起来“blacklists/redirector/domains”实际上是一个文件名,而不是文件内容的一部分。grep ':youtube.com'工作得很好:

% cat test.txt
./blacklists/movies/domains:youtube.com
./blacklists/movies/domains:youtube.com.br
blacklists/redirector/domains:needyoutube.com
lacklists/redirector/domains:openyoutube.com
blacklists/redirector/domains:proxy-youtube.com
blacklists/redirector/domains:proxytoyoutube.com
blacklists/redirector/domains:streamyoutube.com
blacklists/redirector/domains:unblockyoutube.com
% grep ':youtube.com' test.txt
./blacklists/movies/domains:youtube.com
./blacklists/movies/domains:youtube.com.br

如果您想递归查找以“youtube.com”开头的行,请使用grep -R '^youtube\.com' path/to/dir

答案3

正如其他人指出的那样,您看到的冒号字符不在 grep 搜索的文件中,而是在 grep 的输出中。当 grep 在文件中找到匹配行时,它会显示如下内容:filename:line

您遇到的问题是您想要匹配包含 youtube.com 但不包含 proxyyoutube.com 的文件,对吗?

在您的情况下,您要查找的字符串似乎位于行的开头,因此您可以执行以下操作:

grep * "^youtube.com"

向上箭头字符将仅在行的开头匹配,这样您就可以避免在“extrastuffhereyoutube.com”上匹配

答案4

我更喜欢

echo '
blacklists/redirector/domains:needyoutube.com
lacklists/redirector/domains:openyoutube.com
blacklists/redirector/domains:proxy-youtube.com
blacklists/redirector/domains:proxytoyoutube.com
blacklists/redirector/domains:streamyoutube.com
blacklists/redirector/domains:unblockyoutube
./blacklists/movies/domains:youtube.com
./blacklists/movies/domains:youtube.com.br
'|cut -d: -f2

相关内容