Я обычно пишу скрипты на своем Mac, а затем, когда все готово, я запускаю их в свой тестовый ящик на работе.Проблема, с которой я здесь сталкиваюсь, заключается в том, что у меня есть поток данных, который представляет собой IP-адрес в шестнадцатеричном формате.Я использую смесь sed и awk для ее анализа и преобразования в более читаемый формат.
$echo $content12
cb5c860100000000000000000000000000
[DoD@MBP-13~] echo $content12 |
sed -e 's/../&./g' -e 's/.$//' | sed 's/[0-9a-z][0-9a-z]/0x&/g' |
awk -F"." '{for (i=1;i<NF;i++) printf ("%d\n", $i)}' |
awk '{if (NR<5) printf $0; printf "."}' | sed 's/\.\.*$//'
203.92.134.1
Когда я перенес это на свою тестовую коробку на работе, скрипт не работал должным образом.
$echo $content12 |
sed -e 's/../&./g' -e 's/.$//' | sed 's/[0-9a-z][0-9a-z]/0x&/g' |
awk -F"." '{for (i=1;i<NF;i++) printf ("%d\n", $i)}' |
awk '{if (NR<5) printf $0; printf "."}' | sed 's/\.\.*$//'
0.0.0.0
Версия awk и uname на моем mac -
[DoD@MBP-13~] awk --version
awk version 20070501
[DoD@MBP-13~] uname -a
Darwin MBP-13.local 11.2.0 Darwin Kernel Version 11.2.0: Tue Aug 9 20:54:00 PDT 2011;
root:xnu-1699.24.8~1/RELEASE_X86_64 x86_64
Версия awk и uname на моем тестовом компьютере на работе -
$ awk --version
GNU Awk 3.1.5
Copyright (C) 1989, 1991-2005 Free Software Foundation
$uname -a
Linux 2.6.18-194.el5 #1 SMP Tue Mar 16 21:52:39 EDT 2010
x86_64 x86_64 x86_64 GNU/Linux
Это то, что я могу исправить с небольшими изменениями.Я все еще очень плохо знаком с UNIX-средой, поэтому мой однострочный текст может показаться вам ненормально длинным.Любые предложения будут ценны.