Biến trong sed


7

Tôi có một tập tin chứa tên tệp với đường dẫn tuyệt đối.

Ở giữa đường dẫn đó, là một thư mục biến, bất cứ khi nào tôi cứng mã phần biến, nó sẽ hoạt động tốt, nhưng khi tôi thay thế nó bằng tên biến, sedphần đó không hoạt động.

Một sedphần là để xóa mẫu hoặc cho vấn đề này, đường dẫn.

file=`echo $one_file | sed 's:/dir1/dir2/$VAR/last_dir/::'`

Cố gắng thay thế dấu ngoặc đơn bằng dấu ngoặc kép trong biểu thức sed của bạn.
dnk

Câu trả lời:


8

Khi bạn sử dụng dấu ngoặc đơn, còn gọi là dấu ngoặc cứng, tên biến không được mở rộng. Bạn sẽ cần phải sử dụng dấu ngoặc kép, còn gọi là dấu ngoặc kép.

sed "s:/dir1/dir2/$var/Last_dir/::"

hoặc thoát khỏi dấu ngoặc kép:

sed 's:/dir1/dir2/'"$var"'/Last_dir/::'

Bạn cũng cần chắc chắn rằng $varkhông giữ bất kỳ dấu hai chấm, dấu chấm, dấu sao [, dòng mới hoặc dấu gạch chéo ngược nào hoặc nếu có, chúng sẽ được thoát.


$ s = "foo | thanh"; tiếng vang foobar | quyến rũ #. * # '"$ s"' #; ' làm...??
jirib

@JiriXichtkniha: Vâng, nhưng nếu có một #dòng mới, v.v. bạn sẽ gặp rắc rối.
Runium
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.