2016-11-11 8 views
0

Ich bin neu bei Shell-Skripten. Ich versuche, einen Code zu schreiben, der einige Zeilen aus einer riesigen Datei basierend auf bestimmten Bedingungen grep.Regulärer Ausdruck - Muster

Inhalt der Datei, sagen 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 

und geht für 500 oder mehr Einträge auf.

Nun, ich bin auf der Suche für die Ausgabe nach folgenden Kriterien:

  1. Filter Linien mit nur "AEE" in ihm vorhanden. So wird die Ausgabe aussieht wie:
3 chdc4326aee6.om,bhuvi,01-Oct-2016 
5 praaeei5 om,lucknow,11-Nov-2016 
  1. Filterlinien mit nur "ae" und „ae + "AEE" in der Datei. so wird die Ausgabe wie folgt aussehen:
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 
  1. Filterzeilen mit nur "ae" aus der Datei. So wird die Ausgabe wie folgt aussehen:
2 chdc501ae.om,patna,26-Aug-2016 

Irgendwelche Vorschläge bitte. Sie können auf einen guten Platz verweisen, um mehr Informationen darüber zu erhalten, damit ich lernen kann.

+0

Dies ist ein gutes Beispiel dafür, wie wäre regulären Ausdruck auf Shell-Skripte verwenden http://stackoverflow.com/questions/ 19737675/shell-script-how-to-extrahieren-string-using-regular-expressions –

+0

Hallo Tim, ich versuche mit grundlegenden Shell-Skripten mit Bash-Shell – Ram

+0

Ähnlich, wenn Sie auf regulären Ausdruck lernen wollen, google es einfach und Sie werden es kann Orte t o Beginnen Sie mit –

Antwort

1

Verwendung grep mit der Option -P und Look-Ahead-

Die Datei:

$ 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 

Finden aee aber nicht 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 

Finden ae oder ae + 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 nur finden:

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

** Vielen Dank ** Herr Toto ... – Ram

+0

@Ram: Gern geschehen, froh, dass es hilft. Fühlen Sie sich frei, die Antwort als akzeptiert zu markieren, wenn es für Sie funktioniert. – Toto

+0

** Danke ** Mr. Toto ... Um offen zu sagen, ich verstehe die Aussagen wirklich nicht. Das funktioniert wirklich mein Problem ... Gibt es einen Platz für mich, um mehr Zeug wie dieses kennen zu lernen ... Ich googelte und googelte ... immer noch googeln .... – Ram