Sử dụng https://regex101.com/ Tôi đã tạo một biểu thức chính quy để trả về lần xuất hiện đầu tiên của địa chỉ IP trong chuỗi.
RegExp:
(?:\d{1,3}\.)+(?:\d{1,3})
RegExp bao gồm các dấu phân cách:
/(?:\d{1,3}\.)+(?:\d{1,3})/
Với chuỗi kiểm tra sau:
eu-west 140.243.64.99
Nó trả về một trận đấu đầy đủ của:
140.243.64.99
Bất kể tôi cố gắng gì với neo, v.v., tập lệnh bash sau sẽ không hoạt động với biểu thức thông thường được tạo.
temp="eu-west 140.243.64.99 "
regexp="(?:\d{1,3}\.)+(?:\d{1,3})"
if [[ $temp =~ $regexp ]]; then
echo "found a match"
else
echo "No IP address returned"
fi
=~
nhà điều hành sẽ được thảo luận ở đây trong cuốn hướng dẫn nơi nó được viết sử dụng bash "biểu thức thông thường kéo dài". Regexes mở rộng được mô tả trong regex(7)
trang người đàn ông và tóm tắt ngắn gọn ở đây .