2009-07-08 18 views
0

私はいくつかのtinydnsゾーンファイルの中で大きなセットのTTLを置き換えるように働いています。 TTLが現在設定されているものに関係なく、私はそれが900になることを望んでいます。私はいくつかのsed魔法を探しています。tinydnsゾーンファイル内のTTLを置き換えるのにsed?

私は、TTLを置き換えるために約50のホスト名があり、ゾーンは散発的に割り当てられます。

ゾーンファイルの行にTTLを含める必要はありません。彼らはそれを持っていない場合は、TTLを追加する必要があります。言い換えれば、私が探している線は次のようになります:

^.*hostname:(hostname|IP)[:#]$ 

 
+abc.com:12.12.12.12 
=*.abc.com:x.y.z.com:1200

私はsedコマンドの正規表現を作成するのに助けが必要です。

cat hosts.txt | while read host; do 
    sed -i 's/'$host':([^:]*)(?:[0-9]*)/'$host':\1:900/' zonefile* 
done

sed gurusは気持ち良いですか?

答えて

4

正規表現は、常にいくつかのタスクを実行する最良の方法とは限りません。あなたのデータファイルは構造化された情報を含んでいます(すなわち、 ":"のような一定の文字で区切られています)。したがって、フィールドを使用して操作する方が簡単です。ここにawkの解があります

awk 'BEGIN{ OFS=FS=":"}NF<3{ $0=$0":"900}NF>=3{ $NF=900}1' file 

あなたの正規表現を構築する時間を費やす必要はありません。

関連する問題