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


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:



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

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

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

0

Sie können den Befehl cut verwenden:

cut -f1 -d "(" file_name

1
Wie unterscheidet sich das von der Antwort von @rahmu oben?
Chris Down

2
@ ChrisDown ist es schlecht formatiert, ohne eine Erklärung?
Kiwy
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.