![Zeile aus derselben Zeichenfolge extrahieren](https://rvso.com/image/36017/Zeile%20aus%20derselben%20Zeichenfolge%20extrahieren%20.png)
Ich habe eine Tabelle wie diese:
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
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|apple
gedruckt.
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 grep
Ergebnis daran an. \b
ist 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