将旧的 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.

相关内容