我有一个名为“demo”的文件,其名称位于我们的 DNS 中。
我试图循环遍历每一行,并将“名称”替换为“名称和 IP 地址”(作为验证 dns 查询的一种方式)
到目前为止,我已经有了这个,但在 sed 或 awk 命令上没有运气。 感谢帮助。
谢谢。
演示
1 10.1.22.117 qa/testing
2 172.16.1.5 dc/vpn
3 10.102.99.2 devtest/testing
“diggs”有一个别名,可产生一行输出。
期望的输出
1 10.1.22.117==qa==qa qa/testing
2 172.16.1.5==dc==dc dc/vpn
3 10.102.99.2==devtest==devtest devtest/testing
进程.sh
for i in $(awk -F " " '{print $2}' demo)
do
bothR="$i==$(diggs $i)"
echo "$i==$bothR"
echo "#######"
#what sed?
#sed -i "s/$i/$bothR/" demo
#sed '0,/"$i"/s//"$bothR"/' demo
done
最佳答案
不需要循环,试试这个 awk
单行代码。
$cat file
1 10.1.22.117 qa
2 172.16.1.5 dc
3 10.102.99.2 devtest
做-
$awk '{print $1, $2 "=="$3"=="$3, $3}' file
输出-
1 10.1.22.117==qa==qa qa
2 172.16.1.5==dc==dc dc
3 10.102.99.2==devtest==devtest devtest
如果您想保留输出中的选项卡-
awk 'BEGIN {OFS="\t"} {print $1, $2 "=="$3"=="$3, $3}' file
关于linux - sed/awk 在循环中替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42709351/