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

Shell grep搜索特定文本并排除包含该文本的2个URL,shell,unix,grep,command,Shell,Unix,Grep,Command,我正在尝试用油灰搜索一个特定的文本“Omega”。但我想排除两个也包含文本“Omega”的特定URL 我试过: grep -ril "Omega" --exclude='<p> | <a href="www.omega.com"> Omega</a> |</p>' --exclude='<li><a href ="www.omega.com"> Omega</a></li>' grep-ril“Om

我正在尝试用油灰搜索一个特定的文本“Omega”。但我想排除两个也包含文本“Omega”的特定URL

我试过:

grep -ril "Omega" --exclude='<p> | <a href="www.omega.com"> Omega</a> |</p>' --exclude='<li><a href ="www.omega.com"> Omega</a></li>'
grep-ril“Omega”--exclude='|

'-exclude='
  • '
    还尝试:

    grep -ril "Omega" --exclude={<p> | <a href=" www.omega.com"> Omega</a> |</p>,<li><a href ="www.omega.com" target="_blank">Omega</a></li>}
    
    grep-ril“Omega”--exclude={
    
    注意:其中一个排除中的2个管道是我的导航菜单的分隔符。 我正在尝试将结果写入日志文件。我没有生成所需的结果。

    最简单的解决方案:

    grep <your_search> | grep -v <url1> | grep -v <url2>
    
    grep | grep-v | grep-v
    
    我会使用
    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
    

    在没有专用解析器的情况下解析html代码是很痛苦的。如果无法清除grep的输入,请使用专用的

    如果您可以清理代码,那么它应该非常简单:

    # 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
    > 
    

    谢谢你的快速回复。我对堆栈溢出还不熟悉,我的帖子因为href的原因设置不正确,所以我有一个url,它有管道“| |”,如何在不使用“或”的情况下包含管道。这有关系吗,因为它在引用中?使用grep-ve-e有更简单的方法:
    grep-ve-e
    @nicban您可以随时使用grep-vF-F告诉它将引号中的字符串视为固定字符串。看:非常感谢,我要试试这个!
    # 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
    >