Zeile aus derselben Zeichenfolge extrahieren

Zeile aus derselben Zeichenfolge extrahieren

Ich habe eine Tabelle wie diese:

Bildbeschreibung hier eingeben

und eine Datei mit 2 Zeichenfolgen aus der dritten Spalte wie: Apfel Kartoffel

Ich möchte den Header und alle Zeilen extrahieren, die die Zeichenfolgen „Apfel“ und „Kartoffel“ enthalten, um dies zu erhalten

Bildbeschreibung hier eingeben

Danke

Antwort1

Verwendung von awk:

awk 'FNR == 1 || /potato|apple/'

Verwendung von sed:

sed -n '1p; /potato\|apple/p'

In beiden Fällen werden Zeile 1 und alle passenden Zeilen potato|applegedruckt.

Antwort2

Hier noch einmal die txt-Tabelle im Klartext:

A       B       C       D       E
21      63      apple   yellow  5
23      69      lemon   green   6
45      135     orange  yellow  7
67      201     mango   green   4
54      162     potato  maroon  5

Obwohl mir eine Lösung mit geringer Komplexität einfällt, halte ich sie für etwas hackig :-) Angenommen, die txt-Datei der Tabelle heißttable1

$ head -1 table1 && grep '\b\(potato\|apple\)\b' table1

Dies nimmt die erste Zeile und hängt das grepErgebnis daran an. \bist eine Wortgrenze. So wird sichergestellt, dass Wörter wie „grapple (hook)“ herausgefiltert werden :) Eine andere, komplexere Lösung geht davon aus, dass A, B, C ... durch Tabulatoren getrennt sind \t:

$ grep '\(\b\(potato\|apple\)\b\|\([A-Z]\|\(\t\|\n?$\)\)\)' table1

verwandte Informationen