我有这个格式的旧域区域文件
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.