2012-06-01 28 views
8

シェルでファイルを検索して値を置き換えることはできますか?サービスをインストールすると、設定ファイルの変数を検索し、その値で自分の設定を置き換えたり挿入したりできます。シェルスクリプトでの検索と置換

+0

もちろん、sedを使用できます。 – Mithrandir

答えて

20

もちろん、これはsedまたはawkを使用して行うことができます。 sedの例:

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

一般的にawkやsedのようなツールがこれに使用されています。

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

これを行うには、sedを使用することができます:sedを

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

はそこにシステムのように、すべてのUNIX上で、おそらく可能です。複数の発生を交換したい場合は、sコマンドにグラムを追加することができます:あなたは正しくtoreplace-値を指定しない場合、これは完全にあなたのconfigfileを破壊することができるので

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

は注意してください。 sedは、検索と置換の際の正規表現もサポートしています。 UNIX power toolsのawk、sedは、grepをやPerlでin-place edit of files

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

sedを使用して検索/置換を実行できます。 「あなたはドン場合

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

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

:私は通常のbashシェルスクリプトからこれを行うには、新しい名前に置換される値を含む元のファイルを移動して、次のように私の元のファイル名に出力を書き込みsedを走ら出力を指定すると、置換は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

あなたのコードで 'enter code here'を確認できますか?おそらくそこにはいけません。ところで、ほとんどの場合、ソリューションにコメントを付けるか、少なくとも問題を解決する方法を要約することをお勧めします。 –