Làm thế nào để sử dụng phân tách awk của trích dẫn duy nhất?


11

Tôi muốn sử dụng awk để lấy thông tin từ đầu ra SQL như sau:

(đếm (lớp máy chủ riêng biệt) = '2')

Và cần trích xuất số, là 2 trong ví dụ này.

Tôi muốn làm một cái gì đó như sau, nhưng không thể tìm ra cách thoát khỏi trích dẫn duy nhất:

<sqlCommand> | awk 'BEGIN{FS="'"}{print $2}'

Làm thế nào tôi có thể nhận được một trích dẫn theo nghĩa đen là dấu phân cách trường của tôi trong awk?

Câu trả lời:


14

Để chèn một ký tự trích dẫn trong một chuỗi trích dẫn, kết thúc chuỗi hiện tại, viết "'"hoặc \'bắt đầu lại chuỗi.

Trong ví dụ của bạn, đó là

awk 'BEGIN{FS="'"'"'"}{print $2}'

hoặc là

awk 'BEGIN{FS="'\''"}{print $2}'

Tuy nhiên, sử dụng công -Ftắc để chỉ định dấu tách trường sẽ dẫn đến mã dễ đọc hơn:

awk -F\' '{print $2}'

Tại sao bạn cập nhật phong cách từ -F"'"đến -F\'?
WilliamKF

1
Không có lý do chính đáng. Cả hai công việc, nhưng đầu tiên có quá nhiều trích dẫn theo sở thích của tôi.
Dennis
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.