Sed - xóa dòng có nhiều ký tự đặc biệt bằng một biến


2

Tôi đang có tệp sau:

  • test.txt

trong đó có:

3;/var/tmp/test.mp4
3;/var/tmp/test2.mp4
1;/var/tmp/test3.mp4

Tôi cần phải loại bỏ ví dụ " 3; /var/tmp/test2.mp4 "Sử dụng một biến.

string="3;/var/tmp/test2.mp4"
sed -i '#$string#d' test.txt

Không ném bất kỳ lỗi nào nhưng tôi dường như không thể xóa dòng ... Bất kỳ trợ giúp sẽ được đánh giá cao.

Cảm ơn!

Câu trả lời:


3

Bạn phải thoát khỏi dấu phân cách đầu tiên nếu khác / trong địa chỉ.

Ngoài ra nếu bạn sử dụng các biến thì bạn phải phơi chúng ra shell (với dấu ngoặc kép để tránh các vấn đề với khoảng trống).

sed -i "\#$string#d" test.txt

hoặc là

sed -i '\#'"$string"'#d' test.txt
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.