grep搜索特定文本并排除包含该文本的2个URL

时间:2015-06-01 21:18:54

标签: shell unix grep command

我试图对特定文字进行PuTTY搜索" Omega"。但我想排除两个也包含文本" Omega"。

的特定网址

我试过了:

grep -ril "Omega" --exclude={<p> | <a href=" www.omega.com"> Omega</a> |</p>,<li><a href ="www.omega.com" target="_blank">Omega</a></li>}

也尝试过:

Main

请注意,其中一个排除项中的2个管道是导航菜单的分隔符。 我尝试将结果写入日志文件。我没有产生我需要的结果。

3 个答案:

答案 0 :(得分:1)

最简单的解决方案:

grep <your_search> | grep -v <url1> | grep -v <url2>

答案 1 :(得分:1)

我会使用awk

awk -v pat1='<a href="www.omega.com"> Omega</a> |</p>' 
    -v pat2='<li><a href ="www.omega.com"> Omega</a></li>' 
    '/Omega/ && $0 !~ pat1 && $0 !~ pat2' file

有了这个,我们匹配那些包含Omega但不包含您在问题中指明的模式的行。

请注意,由于grep --exclude影响文件而不影响模式,因此exclude无法实现。{/ p>

测试

$ cat a
Omega
<p> | <a href="www.omega.com"> Omega</a> |</p>
<li><a href ="www.omega.com"> Omega</a></li>'
my Omega
$ awk -v pat1='<a href="www.omega.com"> Omega</a> |</p>' -v pat2='<li><a href ="www.omega.com"> Omega</a></li>' '/Omega/ && $0 !~ pat1 && $0 !~ pat2' a
Omega
my Omega

答案 2 :(得分:0)

在没有专用解析器的情况下解析HTML代码非常痛苦。如果您无法清除grep的输入,请使用专用的HTML Parser

如果你可以清理代码,那么它应该简单如下:

# nice input ahead
> cat omega_sites.txt 
www.exclude1_omega.com
www.exclude1_omega.com
www.my_precious_omega.com
www.all_but_omega.org
www.just_alpha.net

# filter exclude1 and exclude2 
# and redirect using tee to a log file 
> grep -i omega omega_sites.txt | grep -v -i "exclude1\|exclude2" | tee omega_sites_filtered.txt
www.my_precious_omega.com
www.all_but_omega.org
> 
相关问题