Trong trường hợp bạn muốn thay thế một chuỗi ký tự trong 1 file, thường chúng ta sẽ mở nó vào với 1 trình soạn thảo text editor như notepad++, vs code… Sau đó dùng chức năng replace chuỗi mà công cụ cung cấp. Tuy nhiên nếu nó là 1 file nặng vài chục mb trở lên như file sql chẳng hạn, thì khi mở và thực hiện thao tác replace chuỗi này rất mất thời gian. Thường hệ điều hành có hỗ trợ chúng ta command line để replace text một cách đơn giản. Bạn hãy làm như sau:
Lệnh sed replace chuỗi trong 1 file
VD: Sử dụng sed để replace chuỗi “example” thanh “vinasupport”
Trên Linux
sed -i 's/example/vinasupport/g' /path/to/file.txt
Trên MacOS
sed -i '' 's/example/vinasupport/g' /path/to/file.txt
Vì sao trên MacOS chúng ta cần thêm dấu ” thì vui lòng tham khảo bài viết này.
Trên Windows
powershell -Command "(gc myFile.txt) -replace 'example', 'vinasupport' | Out-File -encoding ASCII myFile.txt"
Trường hợp bạn không muốn nhớ cú pháp của command này thì có thể viết nó thành file bash để chạy.
Bash script replace chuỗi trong 1 file
Tạo 1 file replace.sh có nội dung như sau:
#!/usr/bin/env bash file=temp/vinasupport.sql text_from=https://vinasupport.com text_to=https://vinasupport.com.com # Escaping slash text_from=$(echo $text_from | sed 's/\//\\\//g') text_to=$(echo $text_to | sed 's/\//\\\//g') # Process replace string sed -i '' "s/${text_from}/${text_to}/g" $file echo "Replace string in file ${file}"
Thêm quyền execute cho file replace.sh
sudo chmod +x replace.sh
Để chạy file các bạn làm như sau:
./replace.sh