2016-11-11 218 views
0

我是Shell新手脚本。我正在尝试编写一个代码,该代码应该根据特定条件从大文件中删除几行代码。正则表达式 - 模式

文件的内容,说names.txt中

1 ae1aee2sonata om,vadodara,23-Aug-2016 
2 chdc501ae om,patna,26-Aug-2016 
3 chdc4326aee6 om,bhuvi,01-Oct-2016 
4 ae3aee6prsons hqr,bangalore,29-Aug-2016 
5 praaeei5 om,lucknow,11-Nov-2016 
6 aetaeen6pana om,phanto,13-Oct-2016 

,并继续为500个或多个条目。

现在,我要寻找以下的输出:

  1. 过滤线,​​只有“AEE”,在它可用。所以,输出将看起来 像:
3 chdc4326aee6.om,bhuvi,01-Oct-2016 
5 praaeei5 om,lucknow,11-Nov-2016 
  • 过滤线与唯一的 “AE” 和“AE + “的文件中AEE” 可用。所以, 的输出如下:
  • 1 ae1aee2sonata.hqr,vadodara,23-Aug-2016 
    2 chdc501ae.om,patna,26-Aug-2016 
    4 ae3aee6prsons hqr,bangalore,29-Aug-2016 
    6 aetaeen6pana om,phanto,13-Oct-2016 
    
  • 只从文件中过滤只有“ae”的行。因此,输出如下:
  • 2 chdc501ae.om,patna,26-Aug-2016 
    

    任何建议,请。你可以指出一个获取更多信息的好地方,这样我就可以学习。

    +0

    这将是如何使用的shell脚本正则表达式 http://stackoverflow.com/questions/一个很好的例子19737675/shell脚本如何提取字符串使用正则表达式 –

    +0

    嗨蒂姆,我尝试与基本壳牌脚本与bash shell – Ram

    +0

    同样,如果你想学习正则表达式,只需谷歌它,你会这样可能会放置t o从 –

    回答

    1

    使用grep与选项-P和前瞻

    文件:

    $ cat data.txt 
    1 ae1aee2sonata om,vadodara,23-Aug-2016 
    2 chdc501ae om,patna,26-Aug-2016 
    3 chdc4326aee6 om,bhuvi,01-Oct-2016 
    4 ae3aee6prsons hqr,bangalore,29-Aug-2016 
    5 praaeei5 om,lucknow,11-Nov-2016 
    6 aetaeen6pana om,phanto,13-Oct-2016 
    

    查找aee但不ae

    $ grep -P '^(?:(?=.*aee[^e]))?(?!.*ae[^e]).*(aee)[^e]' data.txt 
    3 chdc4326aee6 om,bhuvi,01-Oct-2016 
    5 praaeei5 om,lucknow,11-Nov-2016 
    

    查找aeae + aee

    $ grep -P '^(?:(?!.*aee[^e]))?(?=.*ae[^e]).*(aee?)[^e]' data.txt 
    1 ae1aee2sonata om,vadodara,23-Aug-2016 
    2 chdc501ae om,patna,26-Aug-2016 
    4 ae3aee6prsons hqr,bangalore,29-Aug-2016 
    6 aetaeen6pana om,phanto,13-Oct-2016 
    

    查找ae只:

    $ grep -P '^(?!.*aee[^e])(?=.*ae[^e]).*(ae)[^e]' data.txt 
    2 chdc501ae om,patna,26-Aug-2016 
    
    +0

    的线**谢谢** Toto先生... – Ram

    +0

    @Ram:不客气,很高兴它有帮助。如果它适合您,请随时将答案标记为已接受。 – Toto

    +0

    **谢谢** Toto先生......公开说,我真的不明白这些陈述。这真的解决了我的问题...有没有一个地方让我了解更多这样的东西...我谷歌搜索和谷歌搜索..仍然使用谷歌搜索.... – Ram