2017-12-25 5 views
-1

Ich habe eine Datei mit mehr als 100 Zeilen.wie zwei Zeichenfolgen in einer Zeile eins mit Leerzeichen und ein weiteres Zeichen zwischen zwei Zeichenfolgen in Linux

Aber nur einige Linien haben spezifische Muster wie abc.

Meine Frage ist, dass ich möchte zwei Dinge

  1. 5. Wort Linie, die Muster abc hat zu drucken.

  2. Wörter zwischen 2 verschiedenen Strings (xxx, yyy).

Sagen Sie zum Beispiel meine Datei, um den Inhalt unten:

Dies ist in erster Linie.

Zweite Zeile hat abc Muster mit xxx als ersten Separator und yyy als zweiten Separator.

Dies ist die dritte Zeile.

Wieder vierte Zeile hat das gleiche Muster abc mit Separatoren xxx und yyy.

Und so weiter.

die erforderliche Ausgabe ist wie folgt:

Muster als erster Separator und gleichen und

ich viele Möglichkeiten, in Linux versucht, aber wenn ich in der Lage war Inhalt 5.es Wort drucken dann zwischen xxx und yyy konnte ich nicht drucken und umgekehrt.

Kann mir bitte jemand helfen?

+3

Linux keine Sprache ist; Sie haben weder Ihre "erforderliche Ausgabe" noch irgendeinen Ihrer Versuche, das Problem zu lösen, angezeigt. –

Antwort

0

Lassen Sie mich Ihre Frage beantworten:


Meine Frage ist, dass ich zwei Dinge

  1. 5. Wort Linie, die abc Muster drucken möchten.

  2. Wörter zwischen 2 verschiedenen Strings (xxx, yyy).


können Sie awk für beide Teile Ihrer Frage verwenden:

  1. awk '/abc/{print $5}' input_file.txt
  2. awk '/xxx.*yyy/{if(match($0,"xxx.*yyy)){print substr($0,RSTART,RLENGTGH)}}' input_file.txt

wenn Sie benötigen beide Anforderungen in einem Befehl zu kombinieren:

awk '/abc/{print $5} /xxx.*yyy/{if(match($0,"xxx.*yyy)){print substr($0,RSTART,RLENGTGH)}}' 

OUTPUT:

pattern 
xxx as first separator and yyy 
same 
xxx and yyy 
Verwandte Themen