1

我想制作一个简单的 awk 脚本/单行程序,它将通过 csv 文件并帮助我用第二列中的值替换 ip 地址中的第 4 个八位字节。这是初始输入的样子:

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

4

2 回答 2

3

你可以这样做:

 awk -F'[ .]' '{print $1 "." $2 "." $3 "." $5}' file.csv
于 2013-10-17T15:18:21.727 回答
1

你可以简单地做,有点像这样:

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
于 2013-10-17T19:28:33.453 回答