awk单独打印文件中的每一行

我正在制作一个脚本,该脚本获取区域记录和值列表并将其放入 DNS 服务器。所需输出的格式仅适用于 ansible,问题是我无法使用 awk 在每一行上单独操作。它的作用是当我不提及 a 时,NR它会在同一行中打印所有项目。当我提到NR它时,它不打印任何内容或仅打印指定的 NR(即,只有当我执行 NR==1 时,它才会打印第一行)我的目标是迭代所有行并以我想要的格式在结束后用换行符打印它们线。

bash_script

#! /bin/bash

read -p "File: " file
zone=`awk 'NR==1 { print $2}' ${file}`
echo "${zone}:" >> /etc/ansible/roles/create_dns/defaults/main/${zone}.yml

lines=`wc -l < ${file}`
for line_num in $(seq 1 $lines)
do
        echo $line_num
        echo `awk 'NR==$line_num {print "  - { zone: x27" $2"x27, record: x27" $1"x27, value: x27" $3"x27 }n"}' ${file}` >> /etc/ansible/roles/create_dns/defaults/main/${zone}.yml
done

$file

ansible ben.com 10.0.0.10
test ben.com 10.0.0.110
example ben.com 10.0.0.120

Wanted output:

ben.com:
  - { zone: 'ben.com', record: 'ansible', value: '10.0.0.10' }
  - { zone: 'ben.com', record: 'test', value: '10.0.0.110' }
  - { zone: 'ben.com', record: 'example', value: '10.0.0.120' }

Output i get:

ben.com:



回答

您可以为此使用此单曲awk

read -p "File: " file
awk '{printf "t- { zone: 47%s47, record: 47%s47, value: 47%s47 }n", $2, $1, $3 > $2}' "$file"
cat ben.com

   - { zone: 'ben.com', record: 'ansible', value: '10.0.0.10' }
   - { zone: 'ben.com', record: 'test', value: '10.0.0.110' }
   - { zone: 'ben.com', record: 'example', value: '10.0.0.120' }```


以上是awk单独打印文件中的每一行的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>