Unix - изменить поле IP в CSV и вывести новый файл - PullRequest
0 голосов
/ 22 мая 2018

Надеюсь получить некоторую информацию по этому вопросу, так как я изо всех сил.У меня есть CSV, который содержит маску IP, в которой я хочу получить сетевой IP и широковещательный IP.Так, например, я хочу, чтобы в поле ввода 1.0.0.0/24 было выведено 2 новых поля, которые содержат поля: 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

Куда мне идти отсюда?Как мне добавить эти 2 новых поля в новый выходной файл?

Заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 24 мая 2018

посмотреть, работает ли это на RHEL 5.x ... вы хотите вывод в csv с разделителем запятых?for i in $(cat csip.csv); do echo "$i $(ipcalc -n -b $i | grep -E "Address|Broadcast" | awk {'print ","$2'} | tr '\n' ' ')" ; done > new.csv

Для вашей версии ipcalc, пожалуйста, попробуйте это: for i in $(cat csip.csv); do echo "$i $(ipcalc -n -b $i | grep -E "NETWORK|BROADCAST" | awk -F= {'print ","$2'} | tr '\n' ' ')" ; done > new.csv

0 голосов
/ 22 мая 2018

Почему бы не использовать awk?

Если вы используете Linux (не Unix):

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

Вывод:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...