awk 帮助:将 IP 地址中的第 4 个八位字节替换为 CSV 电子表格中的其他 IP



我想制作一个简单的awk脚本/单行代码,它将通过csv文件并帮助我将IP地址中的第4个八位字节替换为第2列中的值。以下是初始输入的外观:

10.4.0.0 2
10.4.50.0 4
10.4.15.0 52
10.4.0.0 19

我想要

10.4.0.2
10.4.50.4
10.4.15.52
10.4.0.19

你可以

这样做:

 awk -F'[ .]' '{print $1 "." $2 "." $3 "." $5}' file.csv

你可以简短地做,有点晦涩难懂,就像这样:

awk '{$4=$5} NF--' FS='[ .]+' OFS=. file.csv

解释

  • $4=$5将第四个八位字节设置为第五个字段,其中字段计数基于点和空格。
  • NF--有两个函数,它删除第五个字段($5)并调用默认规则({print $0}),因为它不为零。

更新

OP作为评论发布的请求(将网络掩码附加到IP地址)可以很容易地添加到这个答案中:

awk '{$4=$5"/28"} NF--' FS='[ .]+' OFS=. file.csv

输出:

10.4.0.2/28
10.4.50.4/28
10.4.15.52/28
10.4.0.19/28

最新更新