如何迭代存储在变量中的ip地址,并使用sed或awk将这些IP地址放在文件中

时间:2017-11-03 18:08:00

标签: linux shell

我已经搜索了很多但没有成功的情况。 希望得到有用的建议

提前感谢您的帮助......

我在变量中存储的IP地址很少[比如IP = {10.10.10.10 20.20.20.20 30.30.30.30}]

我的要求是在此变量中迭代IP,搜索文本[说地址]并在下一行中插入此IP地址,在文件中找到文本。

示例:

让我们的文件内容如下,我必须搜索文本“地址”并在其下面添加IP

...

地址

...

替换IP文件后应该看起来像 -

...

地址

地址10.10.10.10

地址20.20.20.20

地址30.30.30.30

...

2 个答案:

答案 0 :(得分:0)

让我们说你的意思是:

    IP="10.10.10.10 20.20.20.20 30.30.30.30"

您可以将它们放入/分割为索引数组:

    set -A ip ${IP}

然后你可以循环遍历数组:

    for ((i=0 ; i<=${#ip[*]}; i++))
      do
        sed s/${word[${i}]}/${ip[${i}]}/g ${fileIn} > ${fileOut}
     done

*请注意我是如何假设你有一个名为word []的匹配数组(来自OP的不清楚,要替换的测试来自哪个。)

答案 1 :(得分:0)

我对input.file的结构不肯定,但我猜这个:

    addy10
    10.10.10.10
    addy20
    20.20.20.20
    addy30
    30.30.30.30




    while read buff
      do
        if [[ ${buff} == [0-9]*.[0-9]*.[0-9]* ]]
          then
            echo "${address} ${buff}"
         elif [[ ${buff} == [a-Z]* ]]
           then
            address=${buff}
        fi
     done < input.file