Shell có trách nhiệm mở rộng các biến. Khi bạn sử dụng dấu nháy đơn cho các chuỗi, nội dung của nó sẽ được xử lý theo nghĩa đen, vì vậy sed
bây giờ cố gắng để thay thế mỗi lần xuất hiện của nghĩa đen $var1
bởi ZZ
.
Sử dụng dấu ngoặc kép
Sử dụng dấu ngoặc kép để làm cho vỏ mở rộng các biến trong khi duy trì khoảng trắng:
sed -i "s/$var1/ZZ/g" "$file"
Khi bạn yêu cầu ký tự trích dẫn trong chuỗi thay thế, bạn phải đặt trước nó bằng dấu gạch chéo ngược sẽ được giải thích bởi shell. Trong ví dụ sau, chuỗi quote me
sẽ được thay thế bởi "quote me"
(ký tự &
được diễn giải bởi sed
):
sed -i "s/quote me/\"&\"/" "$file"
Sử dụng dấu ngoặc đơn
Nếu bạn có nhiều ký tự meta shell, hãy xem xét sử dụng các dấu ngoặc đơn cho mẫu và dấu ngoặc kép cho biến:
sed -i 's,'"$pattern"',Say hurrah to &: \0/,' "$file"
Chú ý cách tôi sử dụng s,pattern,replacement,
thay vì s/pattern/replacement/
, tôi đã làm điều đó để tránh sự can thiệp /
vào \0/
.
Thí dụ
Shell sau đó chạy lệnh trên sed
với các đối số tiếp theo (giả sử pattern=bert
và file=text.txt
):
-i
s,bert,Say hurrah to &: \0/,
text.txt
Nếu file.txt
chứa bert
, đầu ra sẽ là:
Say hurrah to bert: \0/