Không thể tìm thấy đầu vào của tôi trong chuỗi bằng grep


11

Tôi có một chuỗi được phân tách bằng dấu phẩy nơi tôi muốn tìm đầu vào của mình trong dòng đó:

echo US | grep "US,CA,CH,JP"

Đầu ra trống rỗng! Tôi nên sử dụng grep để tìm đầu vào của mình trong chuỗi đó như thế nào?

Câu trả lời:


18

Hoán đổi các đối số của các lệnh:

echo "US,CA,CH,JP" | grep US

Trong:

echo US | grep "US,CA,CH,JP"

bạn đang tìm kiếm chuỗi (mẫu) US,CA,CH,JPtrong chuỗi đầu vào US, không khớp với dự kiến.


14

Trừ khi bạn mong đợi dấu phẩy hoạt động như một câu lệnh "hoặc", trong trường hợp đó bạn chỉ cần thay đổi dấu phẩy thành các đường ống và sử dụng -Etùy chọn cho các biểu thức chính quy mở rộng :

echo US | grep -E "US|CA|CH|JP"

Hoặc thay đổi dấu phẩy thành ký tự dòng mới:

echo US | grep "US
CA
CH
JP"

-1

tôi sẽ dùng $echo US | grep -i "US|CA|JP|CH"

Thay vì sinh thái cung cấp cho nó một danh sách hoặc một cái gì đó, nơi nó thực sự có thể đi và tìm kiếm các mẫu, thay vì tìm kiếm chúng trong "US"


Bạn quên mất -E.
Revierpost
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.