The OpenNET Project / Index page

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

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

"обработка строки"  
Сообщение от nsk email(ok) on 09-Июн-08, 08:44 
Пишу скрипт на bash, возник вопрос,
подскажите плиз, как можно из срочки 172.16.16.0/30 убрать последние три символа,
коммандами fprint, awk, или еще как-то?
Заранее благодарен..
Высказать мнение | Ответить | Правка | Cообщить модератору

 Оглавление

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


1. "обработка строки"  
Сообщение от phpcoder email(??) on 09-Июн-08, 08:49 
>Пишу скрипт на bash, возник вопрос,
>подскажите плиз, как можно из срочки 172.16.16.0/30 убрать последние три символа,

Например, так:

[c0der@xxx ~]$ echo "172.16.16.0/30" | rev | cut -c4- | rev
172.16.16.0

Это универсальный вариант.

[c0der@xxx ~]$ echo "172.16.16.0/30" | sed 's|\(.*\)...$|\1|'
172.16.16.0

Этот тоже, но с использованием sed.

[c0der@xxx ~]$ echo "172.16.16.0/30" | cut -d/ -f1
172.16.16.0

Этот полностью заточен под задачу и основан на разделении строки по косому слэшу.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "обработка строки"  
Сообщение от Andrey Mitrofanov on 09-Июн-08, 09:54 
>>Пишу скрипт на bash, возник вопрос,
>>подскажите плиз, как можно из срочки 172.16.16.0/30 убрать последние три символа,
>
>Например, так:
>[c0der@xxx ~]$ echo "172.16.16.0/30" | rev | cut -c4- | rev
>[c0der@xxx ~]$ echo "172.16.16.0/30" | sed 's|\(.*\)...$|\1|'
>[c0der@xxx ~]$ echo "172.16.16.0/30" | cut -d/ -f1

Гм!? B-)

#!/bin/bash

A="172.16.16.0/30"
echo "1) ${A:0:$((${#A}-3))}"
echo "2) ${A%${A: -3}}"
echo "3) ${A%/*}"

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "обработка строки"  
Сообщение от phpcoder email(??) on 09-Июн-08, 09:57 
>Гм!? B-)
>
>#!/bin/bash
>
>A="172.16.16.0/30"
>echo "1) ${A:0:$((${#A}-3))}"
>echo "2) ${A%${A: -3}}"
>echo "3) ${A%/*}"

Тоже вариант. Вот только это ухудшает читаемость кода, потому что человеку с этим незнакомому (например, мне) эти записи мало понятны. И на их поддержку/переделку в будущем будет потрачено больше времени.

Ну и, кажется, часть из этого (если не все) -- bash specific, т.е. не переносимо.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

6. "обработка строки"  
Сообщение от Николай (??) on 11-Авг-08, 22:33 
Уважаемый!
Пожалуйста поясните зачем поставили $ перед ((  когда его можно не ставить?


>[оверквотинг удален]
>>echo "1) ${A:0:$((${#A}-3))}"
>>echo "2) ${A%${A: -3}}"
>>echo "3) ${A%/*}"
>
>Тоже вариант. Вот только это ухудшает читаемость кода, потому что человеку с
>этим незнакомому (например, мне) эти записи мало понятны. И на их
>поддержку/переделку в будущем будет потрачено больше времени.
>
>Ну и, кажется, часть из этого (если не все) -- bash specific,
>т.е. не переносимо.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

7. "обработка строки"  
Сообщение от Andrey Mitrofanov on 11-Авг-08, 22:44 
>Уважаемый!
>Пожалуйста поясните зачем поставили $ перед ((  когда его можно не ставить?

Наверное, чтоб не держать весь BASH Manual + Adv.Bash Scripting в голове. #:)

>>[оверквотинг удален]
>>>echo "1) ${A:0:$((${#A}-3))}"

Точно! %)) Даже (( + )) можно не "ставить"... Кто бы мог подумать. $)

$ A="12345"; echo "1) ${A:0:${#A}-3}"
1) 12
$ _

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

4. "обработка строки"  
Сообщение от nsk email(ok) on 09-Июн-08, 10:00 
От, здорово!
Спасибо всем! Так и думал что существует 1001 способ...

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

5. "обработка строки"  
Сообщение от vg (??) on 09-Июн-08, 11:52 
>Пишу скрипт на bash, возник вопрос,
>подскажите плиз, как можно из срочки 172.16.16.0/30 убрать последние три символа,
>коммандами fprint, awk, или еще как-то?
>Заранее благодарен..

Обработку ИП адресов лучше делать другими способами
например, использовать perl и модуль Net::Netmask
http://search.cpan.org/dist/Net-Netmask/Netmask.pod

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

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

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




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

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