wypakuj znaki before () za pomocą grep

12

Muszę wyodrębnić znaki przed znakiem „(”. Moja struktura plików to:

róża (dobra) ook

daisy () nr

Lilly (źle) dobrze

słonecznik () ładny

Potrzebuję pliku wyjściowego w postaci:

rose

daisy

lilly

sunflower

czy ktoś może powiedzieć za to polecenie .....

preferowane są awk, grep lub sed ...

Rincy Raphael
źródło
awk -F "(plik„ {print $ 1} ”Próbowałem tego polecenia i jego działania. Chcę poznać polecenie w grep ...
Rincy Raphael
Zaktualizowana odpowiedź.
cuonglm

Odpowiedzi:

8

Alternatywne sedrozwiązanie:

sed 's/(.*//' file
Chris Down
źródło
7

Używanie cut:

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

daisy

lilly

sunflower

Używanie sed:

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

daisy

lilly

sunflower
rahmu
źródło
4
Pamiętaj, że zachowanie będzie się różnić, jeśli będzie więcej niż jeden (na linię.
Stéphane Chazelas
3

awkRozwiązanie:

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

daisy

lilly

sunflower

lub GNU grep:

grep -oP '.*?(?=\()' file
Cuonglm
źródło
5
Lubgrep -o '^[^(]*'
Stéphane Chazelas
0

Możesz użyć polecenia cut:

cut -f1 -d "(" file_name
Charles Nakhel
źródło
1
Czym różni się to od odpowiedzi podanej powyżej przez @rahmu?
Chris Down,
2
@ChrisDown jest źle sformatowany bez żadnego wyjaśnienia?
Kiwy,