2012-06-01 8 views
8

Có thể tìm kiếm trong một tệp bằng cách sử dụng shell và sau đó thay thế một giá trị không? Khi tôi cài đặt một dịch vụ tôi muốn có thể tìm kiếm một biến trong một tập tin cấu hình và sau đó thay thế/chèn các thiết lập của riêng tôi trong giá trị đó.Tìm và thay thế trong kịch bản lệnh shell

+0

Chắc chắn bạn có thể sử dụng sed! – Mithrandir

Trả lời

20

Chắc chắn, bạn có thể làm điều này bằng cách sử dụng sed hoặc awk. ví dụ sed:

sed -i 's/Andrew/James/g' /home/oleksandr/names.txt 
0

Thông thường một công cụ như awk hoặc sed được sử dụng cho việc này.

$ sed -i 's/ugly/beautiful/g' /home/bruno/old-friends/sue.txt 
1

Bạn có thể sử dụng sed để làm điều này:

sed -i 's/toreplace/yoursetting/' configfile 

sed có lẽ là có sẵn trên tất cả các unix như hệ thống ra khỏi đó. Nếu bạn muốn thay thế nhiều hơn một điều xảy ra bạn có thể thêm một g đến s-lệnh:

sed -i 's/toreplace/yoursetting/g' configfile 

Hãy cẩn thận vì đây hoàn toàn có thể phá hủy configfile của bạn nếu bạn không xác định toreplace có giá trị của bạn một cách chính xác. sed cũng hỗ trợ các biểu thức chính quy trong việc tìm kiếm và thay thế.

3
sed -i 's/variable/replacement/g' *.conf 
6

Bạn có thể sử dụng sed để thực hiện tìm kiếm/thay thế. Tôi thường làm điều này từ một kịch bản bash shell, và di chuyển các tập tin gốc có chứa các giá trị được thay thế với một cái tên mới, và chạy sed viết ra tên tập tin ban đầu của tôi như thế này:

#!/bin/bash 
mv myfile.txt myfile.txt.in 

sed -e 's/PatternToBeReplaced/Replacement/g' myfile.txt.in > myfile.txt. 

Nếu bạn don' t chỉ định một đầu ra, thay thế sẽ đi đến stdout.

1
filepath="/var/start/system/dir1" 
searchstring="test" 
replacestring="test01" 

i=0; 

for file in $(grep -l -R $searchstring $filepath) 
do 
    cp $file $file.bak 
    sed -e "s/$searchstring/$replacestring/ig" $file > tempfile.tmp 
    mv tempfile.tmp $file 

    let i++; 

    echo "Modified: " $file 
done 
+0

Bạn có thể kiểm tra 'nhập mã ở đây' trong mã của bạn không? Có lẽ nó không nên ở đó. Nhân tiện: Trong hầu hết các trường hợp, bạn nên cung cấp ý kiến ​​trong giải pháp của mình hoặc ít nhất là tóm tắt cách tiếp cận mà bạn chọn giải quyết vấn đề. –