The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"перевернуть ip (bash)"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Открытые системы на сервере (Разное / Linux)
Изначальное сообщение [ Отслеживать ]

"перевернуть ip (bash)"  –1 +/
Сообщение от Вася (??) on 05-Янв-15, 11:01 
Подскажите пожалуйста, как на bashе перевернуть ip
есть к примеру ip: 192.168.0.1

хочу вывести: 1.0.168.192

Спасибо

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "перевернуть ip (bash)"  +1 +/
Сообщение от Andrey Mitrofanov on 05-Янв-15, 11:11 
> Подскажите пожалуйста, как на 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 .

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "перевернуть ip (bash)"  +1 +/
Сообщение от Вася (??) on 05-Янв-15, 11:17 
Спасибо, Андрей, то, что надо.

>> Подскажите пожалуйста, как на 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 .

Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

3. "перевернуть ip (bash)"  +/
Сообщение от fantom (ok) on 06-Янв-15, 10:13 
> Спасибо, Андрей, то, что надо.
>>> Подскажите пожалуйста, как на 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

Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

4. "перевернуть ip (bash)"  +/
Сообщение от михалыч (ok) on 08-Янв-15, 19:11 
> хочу вывести: 1.0.168.192

я тоже хочу ))

echo 1.0.168.192 | sed 's/\(.*\)\.\(.*\)\.\(.*\)\.\(.*\)/\4.\3.\2.\1/'

но, признаю, на awk -то оно покрасивше будет

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

5. "перевернуть ip (bash)"  +1 +/
Сообщение от Алексей (??) on 09-Янв-15, 00:23 
Вопрос был, как перевернуть 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

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

6. "перевернуть ip (bash)"  –2 +/
Сообщение от fantom (??) on 10-Янв-15, 15:34 
> Вопрос был, как перевернуть 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

echo не является элементом bash :) для полноты картины надо тада уже и без него обойтись ;)

Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

7. "перевернуть ip (bash)"  +2 +/
Сообщение от pavel_simple (ok) on 10-Янв-15, 22:04 
>[оверквотинг удален]
>> Например, так
>> 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

Ответить | Правка | ^ к родителю #6 | Наверх | Cообщить модератору

8. "перевернуть ip (bash)"  +/
Сообщение от Алексей (??) on 10-Янв-15, 23:13 
> echo не является элементом bash :) для полноты картины надо тада уже
> и без него обойтись ;)

К вашему сведению, echo - это bash builtin, а вот /bin/echo не является элементом bash.

Ответить | Правка | ^ к родителю #6 | Наверх | Cообщить модератору

9. "перевернуть ip (bash)"  +/
Сообщение от Алексей (??) on 10-Янв-15, 23:21 
Если не требуется проверять корректность входных данных, то можно обойтись без регулярного выражения.

reverse_ip()
{
  local IFS="."
  IP=($1)
  echo "${IP[3]}.${IP[1]}.${IP[2]}.${IP[0]}"
}

reverse_ip 192.168.0.1

Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру