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 ...


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:



7

Usando cut:

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

daisy

lilly

sunflower

Usando sed:

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

daisy

lilly

sunflower

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

5
Ougrep -o '^[^(]*'
Stéphane Chazelas

0

Você pode usar o comando cut:

cut -f1 -d "(" file_name

1
Como isso é diferente da resposta dada por @rahmu acima?
Chris Baixo

2
@ChrisDown está mal formatado sem nenhuma explicação?
Kiwy #
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.