linux - sed/awk 在循环中替换

标签 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

“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/

相关文章:

linux - Ubuntu 上的 Apache2 配置文件路径。

shell - 删除第一列,然后在 awk 中保留剩余的行不变

linux - 计算 UNIX 中文本的长度

shell - 如何逐行比较两个文件,但仅比较选定的值

xml - 根据搜索父叶字符串从 xml 中查找并打印特定字符串

linux - 链接共享库时的小异常

linux - 串行终端上的二进制数据

ruby - 如果行不是以 KEYWORD 开头,则删除换行符

linux - 使用实时内核头文件编译用户空间代码与默认头文件

php - 尝试用 SED 替换 PHP 中的行