Thoát dấu ngoặc kép trong Grep


91

Tôi muốn thực hiện grep cho các từ khóa có dấu ngoặc kép bên trong. Để đưa ra một ví dụ đơn giản:

echo "member":"time" | grep -e "member\""

Điều đó không phù hợp. Làm thế nào tôi có thể sửa chữa nó?

Câu trả lời:


133

Vấn đề là bạn không thoát đúng chuỗi đầu vào, hãy thử:

echo "\"member\":\"time\"" | grep -e "member\""

Ngoài ra, bạn có thể sử dụng dấu ngoặc kép không thoát trong dấu ngoặc kép:

echo '"member":"time"' | grep -e 'member"'

Đó là một vấn đề tùy chọn mà bạn thấy rõ ràng hơn, mặc dù cách tiếp cận thứ hai ngăn bạn lồng lệnh của mình trong một tập hợp các dấu nháy đơn khác (ví dụ ssh 'cmd').


1
cái này sẽ hoạt động chứ? echo '"member":"time"' |grep -e "member"không kiểm tra
kiến

Hầu hết. Nó cần phải được echo '"member":"time"' |grep -e 'member"'. Cả hai cách tiếp cận đều hợp lệ, nhưng tôi thích thoát rõ ràng hơn, vì mục đích rõ ràng hơn.
cmh

vâng, có lẽ chỉnh sửa câu trả lời của bạn nếu bạn thích một ai đó có thể thích này (+1)
kiến

Điều này (sử dụng dấu gạch chéo ngược) không hoạt động trên Windows đối với tôi. Trên thực tế, nó hoạt động một phần, nhưng tôi không thể chuyển hướng đầu ra thành tệp.
Radim Cernej

@RadimCernej Tôi khuyên bạn nên hỏi một câu hỏi cụ thể cho từng cửa sổ - nó có vẻ nằm ngoài phạm vi của câu này.
cmh
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.