trích xuất các ký tự trước () bằng grep


12

Tôi cần trích xuất các ký tự trước ký tự '('. Cấu trúc tệp của tôi là:

hoa hồng (tốt) ook

daisy () không

lilly (xấu) tốt

hướng dương () tốt đẹp

Tôi cần tập tin đầu ra như dưới dạng:

rose

daisy

lilly

sunflower

bất cứ ai có thể nói lệnh cho điều này .....

awk, grep hoặc sed là thích hợp hơn ...


awk -F "(" '{print $ 1}' tập tin tôi đã thử lệnh này và nó hoạt động. Tôi muốn biết lệnh trong grep ...
Rincy Raphael

Cập nhật câu trả lời.
cuonglm

Câu trả lời:



7

Sử dụng cut:

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

daisy

lilly

sunflower

Sử dụng sed:

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

daisy

lilly

sunflower

4
Lưu ý rằng hành vi sẽ khác nhau nếu có nhiều hơn một (dòng trên mỗi dòng.
Stéphane Chazelas

3

Một awkgiải pháp:

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

daisy

lilly

sunflower

hoặc GNU grep:

grep -oP '.*?(?=\()' file

5
Hoặcgrep -o '^[^(]*'
Stéphane Chazelas

0

Bạn có thể sử dụng lệnh cắt:

cut -f1 -d "(" file_name

1
Làm thế nào khác với câu trả lời được đưa ra bởi @rahmu ở trên?
Chris Down

2
@ChrisDown nó hình thành xấu mà không có lời giải thích?
Kiwy
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.