2016-11-11 263 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