![extraer línea de la misma cadena](https://rvso.com/image/36017/extraer%20l%C3%ADnea%20de%20la%20misma%20cadena%20.png)
Tengo una mesa como esta:
y un archivo que contiene 2 cadenas de la tercera columna como: manzana papa
Me gustaría extraer el encabezado y todas las líneas que contienen la cadena manzana y papa para obtener esto.
gracias
Respuesta1
Usando awk
:
awk 'FNR == 1 || /potato|apple/'
Usando sed
:
sed -n '1p; /potato\|apple/p'
En ambos casos, potato|apple
se imprimen la línea número 1 y cualquier línea que coincida.
Respuesta2
Aquí está la tabla de texto nuevamente en texto plano:
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
Aunque se me ocurre una solución de baja complejidad, creo que es un poco complicada :-) Suponiendo que el archivo txt de la tabla se llametable1
$ head -1 table1 && grep '\b\(potato\|apple\)\b' table1
Esto tomará la primera línea y grep
le agregará el resultado. \b
es un límite de palabra. Así que esto asegurará que palabras como "garra (gancho)" se filtren :) Otra solución más compleja supondrá que A,B,C... están separados por tabuladores \t
:
$ grep '\(\b\(potato\|apple\)\b\|\([A-Z]\|\(\t\|\n?$\)\)\)' table1