extrahiere die Zeichen vor () mit grep

12

Ich muss die Zeichen vor dem Zeichen '(' extrahieren. Meine Dateistruktur ist:

Rose (gut) ook

daisy () nr

Lilly (schlecht) in Ordnung

Sonnenblume () schön

Ich benötige eine Ausgabedatei in Form von:

rose

daisy

lilly

sunflower

kann mir jemand den befehl dazu sagen .....

awk, grep oder sed sind vorzuziehen ...

Rincy Raphael
quelle
awk -F "(" '{print $ 1}' Datei Ich habe diesen Befehl ausprobiert und es funktioniert. Ich möchte den Befehl in grep wissen ...
Rincy Raphael
Aktualisierte Antwort.
Cuonglm

Antworten:

8

Eine alternative sedLösung:

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

Verwenden von cut:

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

daisy

lilly

sunflower

Verwenden von sed:

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

daisy

lilly

sunflower
rahmu
quelle
4
Beachten Sie, dass sich das Verhalten unterscheidet, wenn mehr als eine (Zeile vorhanden ist.
Stéphane Chazelas
3

Eine awkLösung:

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

daisy

lilly

sunflower

oder GNU grep:

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

Sie können den Befehl cut verwenden:

cut -f1 -d "(" file_name
Charles Nakhel
quelle
1
Wie unterscheidet sich das von der Antwort von @rahmu oben?
Chris Down
2
@ ChrisDown ist es schlecht formatiert, ohne eine Erklärung?
Kiwy