01/10/2018, 11:07
Câu lệnh sed trong bash shell
Chào mọi người, em đi thẳng vào vấn đề luôn.
Em đang muốn replace một string bằng câu lệnh sed với format như sau.
sed -i "s,url: jdbc:mysql://ip/database?useUnicode=true&characterEncoding=utf8,$url," $FILE
Nhưng khi ra kết quả đã replace xong thì lại ra kết quả này:
url: jdbc:mysql://ip/database?useUnicode=trueurl:characterEncoding=utf8
Dấu &
đã bị sed tự thay thành url:
mất. Không biết ai có cao kiến fix cái này không ? Mình cần giữ lại dấu &
UPDATE: Chỉ cần sửa pattern thành
url: jdbc:mysql://ip/database?useUnicode=true&characterEncoding=utf8
là sẽ bình thường, không bị mất kí tự &
Bài liên quan
Thêm kí tự
\
xem sao bạn nhéKhông được bác ơi nó vẫn bị thay mất
Mình mới để ý lại là dấu
&
bị thay bởi nguyên cái pattern luôn&
->url: jdbc:mysql://ip/database?useUnicode=true&characterEncoding=utf8character
Nên kết quả sẽ thành
url: jdbc:mysql://ip/database?useUnicode=trueurl: jdbc:mysql://ip/database?useUnicode=true&characterEncoding=utf8charactercharacterEncoding=utf8character
=========================================
test.txt
Before:
After:
Ý mình không phải vậy
Ý mình là
jdbc:mysql://ip/database?useUnicode=true&characterEncoding=utf8
thì mình thay một ip mới vào chỗ ip đó thôi, các phần còn lại giữ nguyên, nhưng khi mình thay được ip đó thì dấu&
lại bị thay bởi pattern mất.Bạn cho mình 1 đoạn nội dung gốc của file đích
$FILE
, chỗ lúc chưa bị replace để mình thử xem saoĐó bạn, cái sed này hay thật nhưng rắc rối cũng không kém
Damn làm được rồi bác ạ, chỉ cần sửa pattern thành
thì nó không bị nữa