Ký tự # có nghĩa là gì trong: / bin / sed -e 's # abc # zzz # g'?


Câu trả lời:


14

Đó là một dấu phân cách, giống như "/", nó giống như 's/abc/zzz/g'.

nó có nghĩa là tìm kiếm "abc" thay thế nó bằng "zzz", với cờ toàn cầu, nghĩa là thực hiện nó cho tất cả các "abc" trên dòng, không chỉ cái đầu tiên.

Bạn cũng có thể sử dụng một dấu phân cách thay thế cho một địa chỉ mẫu, nhưng trong trường hợp đó, bạn cần thoát nó để được giải thích chính xác:

sed -r '\#abc#p'

24

Đó là một dấu phân cách hoặc dấu phân cách. Một thường được sử dụng là /như trong

sed 's/old/new/' file

Nhưng sed sẽ lấy ký tự đầu tiên sau (các) lệnh làm dấu phân cách. Bạn có thể sử dụng bất kỳ ký tự thuận tiện, ví dụ ...

sed 's%old%new%' file

Điều này rất hữu ích nếu tệp chứa /(hoặc các ký tự phân cách thông thường khác). Bạn có thể chọn làm dấu phân cách một số ký tự mà bạn biết bạn sẽ không cần đưa vào sedbiểu hiện của mình , tiết kiệm cho bạn rất nhiều lối thoát khó chịu.

Giả sử bạn muốn thay thế

/ubuntu//questions

với

/ubuntu//posts

Bạn đã có thể sử dụng

sed 's/https:\/\/askubuntu.com\/questions/https:\/\/askubuntu.com\/posts/' file

Nhưng tốt hơn để sử dụng

sed 's|/ubuntu//questions|/ubuntu//posts|' file

Có thể đáng chú ý rằng ít nhất trong GNU sed, /có thể được thay thế bằng một ký tự thay thế trong các ngữ cảnh khác với lệnh s(thay thế) - nhưng trong trường hợp đó, nó cần phải được thoát lần đầu tiên, ví dụ: sed '/foo/d'(xóa các dòng khớp foo) trở thànhsed '\#foo#d'
thép.

@steel ấn thật đấy! - Tôi thấy Ravexina đã thêm nó vào câu trả lời của anh ấy, vì vậy tôi có lẽ sẽ rời khỏi tôi :)
Zanna

1
Điều quan trọng là luồng có chứa ký tự phân cách hay không. Điều quan trọng là chuỗi tìm kiếm hoặc chuỗi thay thế có chứa ký tự phân cách hay không.
kasperd

@kasperd ồ đúng rồi. Tôi đã chỉnh sửa một chút :)
Zanna

Câu trả lời của @ Zanna có ý nghĩa hơn: Ký tự đầu tiên sau lệnh "s" xác định dấu phân cách được sử dụng trong lệnh này. Bạn có thể sử dụng bất kỳ nhân vật ở đây. sbabebkhông giống như s/a/e/.
rexkogitans
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.