この形式の古いドメイン領域ファイルがあります。
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.