extraer los caracteres antes () usando grep

12

Necesito extraer los caracteres antes del carácter '('. Mi estructura de archivos es:

rosa (bueno) ook

margarita () no

lilly (mal) bien

girasol () bonito

Necesito el archivo de salida en forma de:

rose

daisy

lilly

sunflower

¿Alguien puede decir el comando para esto .....

awk, grep o sed son preferibles ...

Rincy Raphael
fuente
awk -F "(" '' {print $ 1} 'archivo
Probé
Respuesta actualizada
Cuonglm

Respuestas:

8

Una sedsolución alternativa :

sed 's/(.*//' file
Chris Down
fuente
7

Utilizando cut:

$ <file cut -d \( -f 1
rose

daisy

lilly

sunflower

Utilizando sed:

$ <file sed -e 's/\(.*\)(.*$/\1/'
rose

daisy

lilly

sunflower
rahmu
fuente
44
Tenga en cuenta que el comportamiento será diferente si hay más de uno (por línea.
Stéphane Chazelas
3

Una awksolución:

$ awk -F'(' '{print $1}' file
rose

daisy

lilly

sunflower

o GNU grep:

grep -oP '.*?(?=\()' file
Cuonglm
fuente
55
Ogrep -o '^[^(]*'
Stéphane Chazelas
0

Puede usar el comando de corte:

cut -f1 -d "(" file_name
Charles nakhel
fuente
1
¿Cómo es esto diferente de la respuesta dada por @rahmu arriba?
Chris Down
2
@ChrisDown está mal formateado sin ninguna explicación?
Kiwy