古いDNSゾーンファイルを新しい形式に変換

古いDNSゾーンファイルを新しい形式に変換

この形式の古いドメイン領域ファイルがあります。

ZZYZX IN NS DNS1.NAME-SERVICES.COM. 
        IN NS DNS2.NAME-SERVICES.COM. 
        IN NS DNS3.NAME-SERVICES.COM.   
        IN NS DNS4.NAME-SERVICES.COM.  
ZZYZXX IN NS NS.HOSTDEZINA.COM. 
        IN NS NS2.HOSTDEZINA.COM.  
...

このように変換したい

ZZYZX IN NS DNS1.NAME-SERVICES.COM. 
ZZYZX IN NS DNS2.NAME-SERVICES.COM. 
ZZYZX IN NS DNS3.NAME-SERVICES.COM.   
ZZYZX IN NS DNS4.NAME-SERVICES.COM.  
ZZYZXX IN NS NS.HOSTDEZINA.COM. 
ZZYZXX IN NS NS2.HOSTDEZINA.COM.  
...

これを行う簡単な方法はありますか?たぶんLinuxのコマンドラインツールですか?このためにスクリプトを書くことができますが、間違いが多いのではないかと心配です。ファイルは約20MBですが、手動で行うことはできません。

ベストアンサー1

使用awk:

awk 'NF>3{x=$1} NF<=3{$1=x" "$1}1' file
  • フィールド数が3より大きい場合、最初のフィールド値($1)は変数に格納されますx
  • フィールド数が 3 以下の場合、値はx行の最初のフィールドに追加されます。

出力:

ZZYZX IN NS DNS1.NAME-SERVICES.COM.
ZZYZX IN NS DNS2.NAME-SERVICES.COM.
ZZYZX IN NS DNS3.NAME-SERVICES.COM.
ZZYZX IN NS DNS4.NAME-SERVICES.COM.
ZZYZXX IN NS NS.HOSTDEZINA.COM.
ZZYZXX IN NS NS2.HOSTDEZINA.COM.

おすすめ記事