Подскажите пожалуйста, как на bashе перевернуть ip
есть к примеру ip: 192.168.0.1хочу вывести: 1.0.168.192
Спасибо
> Подскажите пожалуйста, как на bashе перевернуть ip
> есть к примеру ip: 192.168.0.1
> хочу вывести: 1.0.168.192$ ip=192.168.0.1
$ IFS=. <<<"$ip" read a b c d
$ ip="$d.$c.$b.$a"
$ echo 192.168.0.1 |tr . \\n |tac |tr \\n .
Спасибо, Андрей, то, что надо.>> Подскажите пожалуйста, как на bashе перевернуть ip
>> есть к примеру ip: 192.168.0.1
>> хочу вывести: 1.0.168.192
> $ ip=192.168.0.1
> $ IFS=. <<<"$ip" read a b c d
> $ ip="$d.$c.$b.$a"
> $ echo 192.168.0.1 |tr . \\n |tac |tr \\n .
> Спасибо, Андрей, то, что надо.
>>> Подскажите пожалуйста, как на bashе перевернуть ip
>>> есть к примеру ip: 192.168.0.1
>>> хочу вывести: 1.0.168.192
>> $ ip=192.168.0.1
>> $ IFS=. <<<"$ip" read a b c d
>> $ ip="$d.$c.$b.$a"
>> $ echo 192.168.0.1 |tr . \\n |tac |tr \\n .$ echo 12.23.34.45 | awk -F. '{print $4"."$3"."$2"."$1}'
45.34.23.12
> хочу вывести: 1.0.168.192я тоже хочу ))
echo 1.0.168.192 | sed 's/\(.*\)\.\(.*\)\.\(.*\)\.\(.*\)/\4.\3.\2.\1/'
но, признаю, на awk -то оно покрасивше будет
Вопрос был, как перевернуть ip на bash, а не на awk, sed или Perl.Например, так
reverse_ip()
{
if [[ "$1" =~ ([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3}) ]]; then
echo "${BASH_REMATCH[4]}.${BASH_REMATCH[3]}.${BASH_REMATCH[2]}.${BASH_REMATCH[1]}"
fi
}reverse_ip 192.168.0.1
> Вопрос был, как перевернуть ip на bash, а не на awk, sed
> или Perl.
> Например, так
> reverse_ip()
> {
> if [[ "$1" =~ ([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3}) ]]; then
> echo "${BASH_REMATCH[4]}.${BASH_REMATCH[3]}.${BASH_REMATCH[2]}.${BASH_REMATCH[1]}"
> fi
> }
> reverse_ip 192.168.0.1echo не является элементом bash :) для полноты картины надо тада уже и без него обойтись ;)
>[оверквотинг удален]
>> Например, так
>> reverse_ip()
>> {
>> if [[ "$1" =~ ([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3}) ]]; then
>> echo "${BASH_REMATCH[4]}.${BASH_REMATCH[3]}.${BASH_REMATCH[2]}.${BASH_REMATCH[1]}"
>> fi
>> }
>> reverse_ip 192.168.0.1
> echo не является элементом bash :) для полноты картины надо тада уже
> и без него обойтись ;)man bash
> echo не является элементом bash :) для полноты картины надо тада уже
> и без него обойтись ;)К вашему сведению, echo - это bash builtin, а вот /bin/echo не является элементом bash.
Если не требуется проверять корректность входных данных, то можно обойтись без регулярного выражения.reverse_ip()
{
local IFS="."
IP=($1)
echo "${IP[3]}.${IP[1]}.${IP[2]}.${IP[0]}"
}reverse_ip 192.168.0.1