sed / awk在循环中替换

时间:2017-03-10 02:55:25

标签: linux awk sed

我有一个名为" 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

"迪格斯"有一个别名,产生一行输出。

期望的输出

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

process.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

3 个答案:

答案 0 :(得分:1)

无需循环,请尝试此$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

如果要维护输出中的选项卡 -

findByTaskTaskId(long taskId)

答案 1 :(得分:0)

你的问题很清楚你正在尝试做什么,但这是你在想什么?无需涉及sedawk

#!/bin/bash
while read -r line; do
    echo $line $(dig +short $line|head -1) >> output.txt
done < ifile.txt 

答案 2 :(得分:0)

sed -r 's#(.*\S+)(\s+)(\w+)/#\1==\3==\3\2\3/#' input.txt