ekstrak karakter sebelum () menggunakan grep

12

Saya perlu mengekstraksi karakter sebelum karakter '('. Struktur file saya adalah:

mawar (bagus) ook

daisy () no

lilly (buruk) baik-baik saja

bunga matahari () bagus

Saya perlu file output dalam bentuk:

rose

daisy

lilly

sunflower

adakah yang bisa memberitahu perintah untuk ini .....

awk, grep atau sed lebih disukai ...

Raphael Rincy
sumber
awk -F "(" '{print $ 1}' file saya mencoba perintah ini dan berfungsi. Saya ingin tahu perintah dalam grep ...
Rincy Raphael
Jawaban yang diperbarui.
cuonglm

Jawaban:

8

sedSolusi alternatif :

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

Menggunakan cut:

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

daisy

lilly

sunflower

Menggunakan sed:

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

daisy

lilly

sunflower
rahmu
sumber
4
Perhatikan bahwa perilaku akan berbeda jika ada lebih dari satu (per baris.
Stéphane Chazelas
3

Sebuah awksolusi:

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

daisy

lilly

sunflower

atau GNU grep:

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

Anda dapat menggunakan perintah cut:

cut -f1 -d "(" file_name
Charles nakhel
sumber
1
Bagaimana ini berbeda dari jawaban yang diberikan oleh @rahmu di atas?
Chris Down
2
@ChrisDown, formatnya buruk tanpa penjelasan?
Kiwy