estrarre i caratteri prima di () usando grep


12

Devo estrarre i caratteri prima del carattere '('. La mia struttura di file è:

Rose (buono) ook

margherita () no

lilly (cattivo) multa

di semi di girasole () bello

Ho bisogno del file di output come nella forma di:

rose

daisy

lilly

sunflower

qualcuno può dire il comando per questo .....

awk, grep o sed sono preferibili ...


awk -F "(" "{print $ 1} 'file ho provato questo comando e il suo funzionamento. Voglio conoscere il comando in grep ...
Rincy Raphael

Risposta aggiornata.
cuonglm

Risposte:



7

Utilizzando cut:

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

daisy

lilly

sunflower

Utilizzando sed:

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

daisy

lilly

sunflower

4
Si noti che il comportamento sarà diverso se ce n'è più di uno (per riga.
Stéphane Chazelas,

3

Una awksoluzione:

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

daisy

lilly

sunflower

o GNU grep:

grep -oP '.*?(?=\()' file

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

0

Puoi usare il comando cut:

cut -f1 -d "(" file_name

1
In che modo differisce dalla risposta data da @rahmu sopra?
Chris Down,

2
@ChrisDown è mal formulato senza alcuna spiegazione?
Kiwy,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.