Linux Unix-将IP字段更改为csv并输出新文件

Linux Unix-将IP字段更改为csv并输出新文件,linux,file,csv,unix,calc,Linux,File,Csv,Unix,Calc,希望在这方面有所帮助,因为我正在努力。我有一个csv,其中包含一个IP掩码,我想在其中获取网络IP和广播IP。 例如,我希望输入字段1.0.0.0/24输出两个新字段,其中一个包含变量:1.0.0.0,另一个包含1.0.0.255。 我有代码来做这件事 广播: for i in $(cat geoip.csv);do bcaddr=$(ipcalc -n -b $i);echo ${bcaddr#BROADCAST=};done 对于网络: for i in $(cat geoip.csv)

希望在这方面有所帮助,因为我正在努力。我有一个csv,其中包含一个IP掩码,我想在其中获取网络IP和广播IP。 例如,我希望输入字段1.0.0.0/24输出两个新字段,其中一个包含变量:1.0.0.0,另一个包含1.0.0.255。 我有代码来做这件事

广播:

for i in $(cat geoip.csv);do bcaddr=$(ipcalc -n -b $i);echo 
${bcaddr#BROADCAST=};done
对于网络:

for i in $(cat geoip.csv);do bcaddr=$(ipcalc -n -4 $i);echo 
${bcaddr#BROADCAST=};done
我该怎么办?如何将这两个新字段追加到新的输出文件中

提前谢谢

为什么不使用awk

如果您使用的是Linux(不是Unix):

输出:

1.0.0.255
1.0.0.0
1.0.0.255 1.0.0.0
如果要在单行中输出:

for i in $(cat geoip.csv);do bcaddr=$(ipcalc -n -b  $i); echo $bcaddr | egrep -o '([0-9]+\.){3}[0-9]+' ORS=' ' ; done}' > ip.txt
输出:

1.0.0.255
1.0.0.0
1.0.0.255 1.0.0.0

看看这在RHEL 5.x上是否有效。。。是否希望输出为带有逗号分隔符的csv格式? 以美元表示的i的
(cat csip.csv);do echo“$i$(ipcalc-n-b$i|grep-E”地址|广播“| awk{'print”,“$2}| tr'\n'”);完成>新建.csv

对于您的ipcalc版本,请尝试以下操作:
以美元表示的i的
(cat csip.csv);DoEcho“$i$(ipcalc-n-b$i|grep-E“网络广播”| awk-F={'print',“$2'}tr'\n'”);done>new.csv

这两个示例都给了我一个消息:“ipcalc:netmask或prefix expected”。此外,我希望输出为广播和网络IP(新字段),并位于一个新的.csv文件中,该文件包含原始文件中的其他字段。Red Hat Ent 5.10编辑我的回答谢谢。结果似乎显示在屏幕上,而不是文本文件。当然,您必须使用重定向
>文件来传递结果。是的,我希望输出带有逗号分隔符。我试过你的建议。它没有添加新的所需字段,只是打印csv中已有的内容。答案已更新,请告诉我进展如何。如果它不起作用,我可以看看你的ipcalc-n-b1.0.0.0/24的输出吗?你好,它不起作用。源中的数据相同,但在每行数据之间添加了空行。我发布了截图得到了截图,请看我的更新答案,第二个是grep为网络或广播提供的答案