2016-12-21 3 views
0

Ich habe einen formatierten Text und ich muss eine Sequenz von zwei Zeichen A durch zwei beliebige Zeichen getrennt finden. Der Punkt ist, dass ich nur in der zweiten Spalte des formatierten Textes nach ihnen suchen muss. Ich muss den Befehl grep verwenden. Ich kam mit dieser:Grep Befehl mit Feldern

grep -E A\.\.\A data.txt 

, die richtig für alle Spalten funktioniert, aber ich brauche nur in der zweiten zu suchen. Irgendwelche Vorschläge? Danke

+2

Geben Sie bitte die Beispieleingabe und die erwartete Ausgabe ein. Fragen dieser Art können vieldeutig sein, ansonsten aus Gründen wie dem Trennzeichen und so weiter. – sjsam

+1

Nachdem ich das gesagt habe, vermute ich, dass 'grep' nicht das beste Werkzeug ist. Sie können 'awk' in 'awk' $ 2 ~ /A../ 'file' verwenden, um zu erreichen, was Sie wollen. Awk hat eingebaute Variablen, die Felder kennzeichnen, die Ihre Arbeit erleichtern. Viel Glück ! – sjsam

Antwort

1

Mit grep und unter der Annahme, dass , wird Ihre Feldtrenn Sie so etwas wie diese verwenden:

  • überspringen die erste Spalte wir

    grep -E "^[^,]*,[^,]*A[^,]{2}A" data.txt 
    

    hier:

    • Anfang der Zeile ^
    • Vorabend rything zum ersten Komma bis [^,]*
    • das erste Komma ,
  • jetzt, dass wir hinter dem ersten Komma sind, z.B. in der zweiten Spalte passen wir
    • optionale Zeichen [^,]* vor den A
    • zwei Zeichen, die kein Komma sind: [^,]{2}
    • gefolgt von der zweiten A

Aber wie andere habe schon gesagt: awk ist wahrscheinlich das bessere Werkzeug für diese Aufgabe.

+0

Danke, ich weiß, dass AWK eine bessere Lösung wäre, aber ich musste es mit Grep machen. Danke für die Vorschläge –