01/10/2018, 09:04

Lệnh replace một ký tự / từ / cụm từ trong nội dung của file trên Linux

Các pro cho e hỏi là trên Linux có lệnh nào mà có thể find & replace 1 từ hay cụm từ đc nhập vào ko ạ?
Theo e tìm hiểu thì có lệnh: sed 's/<word, phrase>/<replacement>/' <file's name> nhưng nó chỉ thay đổi tạm thời thôi (tức là thay đổi trên terminal, còn bản chất trong file nội dung vẫn giữ nguyên) nên lên đây hỏi các pro còn lệnh nào khác ko ạ?

Mai Anh Dũng viết 11:13 ngày 01/10/2018

Thêm -i vào câu lệnh sed

sed -i 's/<word, phrase>/<replacement>/' <file's name>
Long Dragon viết 11:10 ngày 01/10/2018

Thanks anh, nhân tiện cho e hỏi luôn là có cách nào làm cho nó replace cái word mình truyền vào ko viết hoa trong kia từ khóa trong file lại viết hoa ko ạ? (ví dụ lệnh grep ...grep -i ... ấy )

Mai Anh Dũng viết 11:16 ngày 01/10/2018

Em thử thêm gI vào cuối lệnh sed

sed -i 's/<word, phrase>/<replacement>/gI' <file's name>
nixCraft – 14 Mar 08

sed Case Insensitive Search Matching - nixCraft

Q. How do I perform a case-insensitive search using sed under UNIX / Linux? I'd like to match all combination of word - foo, FOO, FoO and so on while replacing or performing other operations.

Long Dragon viết 11:16 ngày 01/10/2018

Vậy trong trường hợp mình cần sử dụng g thì để như vậy hả anh?

sed -i 's/<word, phrase>/<replacement>/g/gI' <file's name>
Mai Anh Dũng viết 11:15 ngày 01/10/2018

Không em, anh bỏ thêm g vào để nó tìm hết ấy mà. Dùng I là đủ rồi.

Long Dragon viết 11:12 ngày 01/10/2018

Cho e hỏi thêm 1 vấn đề nữa là ở chỗ: 's/<word, phrase>/<replacement/' thì cái word, phrasereplacement mình có đc phép để một chuỗi (có khoảng trắng) ko a?
Ví dụ trong file có nội dung là: Happy new year!
thì e để:

sed -i 's/"new year"/"old year"/gI' file

thì nó vẫn ko đổi đc cụm từ new year thành old year anh ạ :((

Mai Anh Dũng viết 11:11 ngày 01/10/2018

em đừng có dùng dấu " ở trong phần find và replace làm gì.

Bài liên quan
0