extraire les caractères avant () en utilisant grep

12

J'ai besoin d'extraire les caractères avant le caractère '('. Ma structure de fichier est:

rose (bon) ook

marguerite () non

lilly (mauvais) bien

tournesol () sympa

J'ai besoin d'un fichier de sortie comme sous la forme de:

rose

daisy

lilly

sunflower

quelqu'un peut-il dire la commande pour cela .....

awk, grep ou sed sont préférables ...

Rincy Raphael
la source
awk -F "(" '{print $ 1}' file J'ai essayé cette commande et son fonctionnement. Je veux connaître la commande dans grep ...
Rincy Raphael
Réponse mise à jour.
cuonglm

Réponses:

8

Une sedsolution alternative :

sed 's/(.*//' file
Chris Down
la source
7

En utilisant cut:

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

daisy

lilly

sunflower

En utilisant sed:

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

daisy

lilly

sunflower
rahmu
la source
4
Notez que le comportement sera différent s'il y en a plus d'un (par ligne.
Stéphane Chazelas
3

Une awksolution:

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

daisy

lilly

sunflower

ou GNU grep:

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

Vous pouvez utiliser la commande cut:

cut -f1 -d "(" file_name
Charles nakhel
la source
1
En quoi est-ce différent de la réponse donnée par @rahmu ci-dessus?
Chris Down
2
@ChrisDown c'est mal formaté sans aucune explication?
Kiwy