extrair os caracteres before () usando grep

12

Preciso extrair os caracteres antes do caractere '('. Minha estrutura de arquivos é:

rosa (bom) ok

margarida () não

lilly (ruim) bem

girassol () bom

Eu preciso do arquivo de saída como na forma de:

rose

daisy

lilly

sunflower

alguém pode dizer o comando para isso .....

awk, grep ou sed são preferíveis ...

Rincy Raphael
fonte
awk -F "(" '{print $ 1}' file eu tentei este comando e seu trabalho que eu quero saber o comando no grep ....
Rincy Raphael
Resposta atualizada.
amigos estão dizendo sobre cuonglm

Respostas:

8

Uma sedsolução alternativa :

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

Usando cut:

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

daisy

lilly

sunflower

Usando sed:

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

daisy

lilly

sunflower
rahmu
fonte
4
Observe que o comportamento será diferente se houver mais de um (por linha.
Stéphane Chazelas
3

Uma awksolução:

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

daisy

lilly

sunflower

ou GNU grep:

grep -oP '.*?(?=\()' file
cuonglm
fonte
5
Ougrep -o '^[^(]*'
Stéphane Chazelas
0

Você pode usar o comando cut:

cut -f1 -d "(" file_name
Charles nakhel
fonte
1
Como isso é diferente da resposta dada por @rahmu acima?
Chris Baixo
2
@ChrisDown está mal formatado sem nenhuma explicação?
Kiwy #