Mặc dù tôi gần như chắc chắn điều này đã được đề cập đến, nhưng dường như tôi không thể tìm thấy bất kỳ điều gì cụ thể cho điều này. Khi tôi tiếp tục hành trình học bash, tôi tiếp tục tìm kiếm các phần mà tôi đang bối rối là tại sao mọi thứ xảy ra theo cách họ làm.Sử dụng kết quả phù hợp để tìm chuỗi chỉ bằng bash
Tìm kiếm và thay thế hoặc chỉ phù hợp với chuỗi con trong chuỗi rất có thể là một trong những điều đầu tiên bạn làm khi viết tập lệnh. Tuy nhiên, cố gắng để dính vào một ngôn ngữ duy nhất hoặc tập hợp các công cụ là khó khăn để làm trong bash, như bạn có thể giải quyết vấn đề nhất trong nhiều cách. Tôi đang cố hết sức để ở mức thấp nhất có thể với bash. Tôi đã gặp rắc rối khi tôi cần ai đó giải thích cho tôi.
Làm chuỗi con tìm kiếm trong bash khớp với kết quả khác nhau tùy thuộc vào biểu thức chính quy tôi sử dụng và tôi không chắc chắn lý do.
#!/bin/bash
Stext="Hallo World"
echo `expr "$Stext" : '^\(.[a-z]*\)'` # Hallo
echo `expr "$Stext" : '.*World'` # 11
Mặc dù cả hai tìm kiếm cho một từ, Tôi nghĩ, cả hai không gửi lại những gì họ thấy. Tại sao?
Cảm ơn @jcollado lời giải thích đơn giản :) Tôi đã sử dụng các tài liệu mà bạn cung cấp, nhưng bằng cách nào đó đã không có được điều này ngoặc chức năng. Hướng dẫn Bash-Scripting không quá dễ tiêu hóa. –
Vì câu hỏi này là về [tag: bash], thích dùng * builtin * regex như [@kev đề xuất] (http://stackoverflow.com/a/9602260/1765658) thay vì * fork to '/ usr/bin/expr' *! –