Я пытаюсь отформатировать arp -a вывод по своему вкусу. Например, в данный момент он выводит:
MyRouter (172.16.3.x) at XX:XX:XX:XX:XX:XX [ether] on eth0
PC1 (172.16.3.x) at XX:XX:XX:XX:XX:XX [ether] on eth0
PC2 (172.16.3.x) at XX:XX:XX:XX:XX:XX [ether] on eth0
Но я хочу, чтобы он выводил что-то вроде:
MyRouter;172.16.3.x;XX:XX:XX:XX:XX:XX
PC1;172.16.3.x:XX:XX:XX:XX:XX:XX
PC2;172.16.3.x;XX:XX:XX:XX:XX:XX
Если я повторяю одну из строк с помощью команды BAD sed, Я создал, он будет форматировать вывод по своему вкусу, но я не могу использовать его в команде arp -a
Команда:
$ echo "MyRouter (172.16.3.x) at XX:XX:XX:XX:XX:XX [ether] on eth0" | sed 's/ (/;/g' | sed 's/) at /;/g' | sed 's/ \[.*//g'
MyRouter;172.16.3.x;XX:XX:XX:XX:XX:XX
Но как я могу отформатировать arp -a вывод как это?
С awk:
arp -a | awk -F'[ ()]' '{OFS=";"; print $1,$3,$6}'
Выход:
MyRouter;172.16.3.x;XX:XX:XX:XX:XX:XX PC1;172.16.3.x;XX:XX:XX:XX:XX:XX PC2;172.16.3.x;XX:XX:XX:XX:XX:XX-F'[ ()]': устанавливает разделители полей в пробелы, ( и [ f5]
OFS=";": устанавливает выходной полевой разделитель на ;