извлечь символы перед (), используя grep

12

Мне нужно извлечь символы перед символом '('. Моя файловая структура:

Роза (хорошо) ООК

ромашка () нет

Лилли (плохо) отлично

подсолнечника () хороший

Мне нужен выходной файл в виде:

rose

daisy

lilly

sunflower

Кто-нибудь может сказать команду для этого .....

awk, grep или sed предпочтительнее ...

Ринси Рафаэль
источник
awk -F "(" '{print $ 1}' файл, который я пробовал эту команду и она работает. Я хочу знать команду в grep ...
Rincy Raphael
Обновленный ответ.
Cuonglm

Ответы:

8

Альтернативное sedрешение:

sed 's/(.*//' file
Крис Даун
источник
7

Использование cut:

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

daisy

lilly

sunflower

Использование sed:

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

daisy

lilly

sunflower
rahmu
источник
4
Обратите внимание, что поведение будет отличаться, если (в строке более одного .
Стефан Шазелас
3

awkРешение:

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

daisy

lilly

sunflower

или GNU grep:

grep -oP '.*?(?=\()' file
cuonglm
источник
5
Илиgrep -o '^[^(]*'
Стефан Шазелас
0

Вы можете использовать команду вырезать:

cut -f1 -d "(" file_name
Чарльз Нахель
источник
1
Чем это отличается от ответа, данного @rahmu выше?
Крис Даун
2
@ChrisDown это плохо отформатировано без объяснения причин?
Kiwy