Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
Архив форумов ЦИТФорума
Море(!) вопросов - Море(!) ответов
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 
Как правильно задавать вопросы

Bash+как выкусить значение со строки

 
Перейти:  
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Программирование
Предыдущая тема :: Следующая тема  
Автор Сообщение
VeL



Зарегистрирован: 18.01.2006
Сообщения: 521
Откуда: Харьков

СообщениеДобавлено: Чт Мар 12 2009 22:09    Заголовок сообщения: Bash+как выкусить значение со строки Ответить с цитатой

Доброго времени суток!

Ув. специ, подскажите плиз один такой нюанс:

OS Linux
Интерпретатор скриптов bash или sh

Есть файл index.html вида
Код:

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html>
<head>
<title>Index of /distfiles on gentoo.kiev.ua:21</title>
</head>
<body>
<h1>Index of /distfiles on gentoo.kiev.ua:21</h1>
<hr>
<pre>
  2007 Nov 03        File        <a href="ftp://gentoo.kiev.ua:21/distfiles/0.11.0.tgz">0.11.0.tgz</a>  (1,710,864 bytes)
  2004 Jun 23        File        <a href="ftp://gentoo.kiev.ua:21/distfiles/0.6.2-debug.diff">0.6.2-debug.diff</a>  (5,127 bytes)
  2001 Dec 16        File        <a href="ftp://gentoo.kiev.ua:21/distfiles/0verkill-0.16.tgz">0verkill-0.16.tgz</a>  (276,579 bytes)
  2005 Jun 20        File        <a href="ftp://gentoo.kiev.ua:21/distfiles/100498D_RM_HxF_Released.pdf">100498D_RM_HxF_Released.pdf</a>  (718,949 bytes)
  2004 Jul 01        File        <a href="ftp://gentoo.kiev.ua:21/distfiles/10429-ridge-0.3.2.tar.bz2">10429-ridge-0.3.2.tar.bz2</a>  (424,979 bytes)
  2004 Jul 28        File        <a href="ftp://gentoo.kiev.ua:21/distfiles/10605-alloy-0.5.2.tar.bz2">10605-alloy-0.5.2.tar.bz2</a>  (407,439 bytes)
  2007 Mar 22        File        <a href="ftp://gentoo.kiev.ua:21/distfiles/10605-alloy-0.5.3.tar.bz2">10605-alloy-0.5.3.tar.bz2</a>  (407,920 bytes)
  2004 Apr 28        File        <a href="ftp://gentoo.kiev.ua:21/distfiles/11384-activeheart-1.2.1.tar.bz2">11384-activeheart-1.2.1.tar.bz2</a>  (483,568 bytes)
  2004 Apr 24        File        <a href="ftp://gentoo.kiev.ua:21/distfiles/11460-kwin-activeheart-1.1.tar.bz2">11460-kwin-activeheart-1.1.tar.bz2</a>  (438,338 bytes)
  2007 Apr 01        File        <a href="ftp://gentoo.kiev.ua:21/distfiles/12956-knemo-0.4.7.tar.bz2">12956-knemo-0.4.7.tar.bz2</a>  (611,475 bytes)
  2007 May 28        File        <a href="ftp://gentoo.kiev.ua:21/distfiles/12956-knemo-0.4.8.tar.bz2">12956-knemo-0.4.8.tar.bz2</a>  (628,707 bytes)
  2006 Oct 07        File        <a href="ftp://gentoo.kiev.ua:21/distfiles/13969-crystal-1.0.2.tar.bz2">13969-crystal-1.0.2.tar.bz2</a>  (656,308 bytes)
  2000 Dec 18        File        <a href="ftp://gentoo.kiev.ua:21/distfiles/14-20pt.zip">14-20pt.zip</a>  (33,170 bytes)
  2004 Aug 02        File        <a href="ftp://gentoo.kiev.ua:21/distfiles/14870-Winamp5-XMMS.tar.bz2">14870-Winamp5-XMMS.tar.bz2</a>  (88,424 bytes)
  2005 Jul 04        File        <a href="ftp://gentoo.kiev.ua:21/distfiles/16028-comix-1.3.4.tar.bz2">16028-comix-1.3.4.tar.bz2</a>  (435,083 bytes)
  2006 Apr 28        File        <a href="ftp://gentoo.kiev.ua:21/distfiles/16028-comix-1.3.8.tar.bz2">16028-comix-1.3.8.tar.bz2</a>  (434,962 bytes)
  2006 May 08        File        <a href="ftp://gentoo.kiev.ua:21/distfiles/16751-abakus-0.91.tar.bz2">16751-abakus-0.91.tar.bz2</a>  (380,025 bytes)
  2008 Jul 20        File        <a href="ftp://gentoo.kiev.ua:21/distfiles/18223-lipstik-2.2.3.tar.gz">18223-lipstik-2.2.3.tar.gz</a>  (527,041 bytes)
  2008 Mar 16        File        <a href="ftp://gentoo.kiev.ua:21/distfiles/19602-cppsymbolviewer-1.11.0.tar.bz2">19602-cppsymbolviewer-1.11.0.tar.bz2</a>  (419,038 bytes)
  2007 May 10        File        <a href="ftp://gentoo.kiev.ua:21/distfiles/19602-symbolviewer-1.10.0.tar.bz2">19602-symbolviewer-1.10.0.tar.bz2</a>  (415,293 bytes)


мне нужно из каждой строки в переменную $VAR1 присвоить значение, например:
из строки:
Код:
  2007 Nov 03        File        <a href="ftp://gentoo.kiev.ua:21/distfiles/0.11.0.tgz">0.11.0.tgz</a>  (1,710,864 bytes)

$VAR1 нужно присвоить значение 1,710,864 (в результате должно быть равно $VAR1=1,710,864)
Ну а потом значение из переменной $VAR1 сложить с переменной $SUM,
Потом со следующей строки получить значение $VAR1=5,127 ну и так далее для остальных строк, и таким образом получить объем всех файлов.
Чтобы обрабатывать все строки, делал так:

Код:

for I in `cat ./index.html`;
do
      echo $I
done

в результате получаю распечатанный список строк на экране.
Пытался сделать с помощью sed, как делать замену с помощью регулярных выражений в sed разобрался, но вот как присфоить найденный шаблон в sed переменной, так и не догнал.

Подскажите плиз, как решить задачку?
_________________
Best regards
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
критикан



Зарегистрирован: 18.02.2005
Сообщения: 247

СообщениеДобавлено: Пт Мар 13 2009 18:44    Заголовок сообщения: 'man sh' 97 вопросов из 100 -- 'man awk' остальное Ответить с цитатой

--- текстовый файл SUM.awk ---
    BEGIN {
    FS = "[()]" # делаем круглые скобки разделителями полей
    }
    NF > 1 { # обрабатываем только строки, где есть не менее двух скобок
    gsub (/[^0-9]/, "", $(NF - 1)) # из предпоследнего поля выбрасываем все нецифры
    sum += $(NF - 1) # увеличиваем переменную sum на значение предпоследнего поля
    }
    END {
    print "Итого: " sum # выводим результат
    }
--- конец текстового файла SUM.awk ---

даём команду
Код:
awk -f SUM.awk < хтмл-файл
или, что для данного случая то же самое
Код:
awk -f SUM.awk хтмл-файл


---------------------------------------------------
'man sh' решает 97 вопросов из 100, оставшиеся 3 вопроса решает 'man awk'. а начинающие программисты пишут программы на Си++ и Дельфи
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
VeL



Зарегистрирован: 18.01.2006
Сообщения: 521
Откуда: Харьков

СообщениеДобавлено: Вс Мар 15 2009 21:37    Заголовок сообщения: Ответить с цитатой

Скажите, ну а все же с помощью sed-a это реально сделать?

Просто я это дело планирую использовать в скрипте и получение значения из строки это самая что ни есть малая подзадачка
_________________
Best regards
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
критикан



Зарегистрирован: 18.02.2005
Сообщения: 247

СообщениеДобавлено: Пн Мар 16 2009 20:08    Заголовок сообщения: сила-юникс, терпение-не винда, мудрость-разница Ответить с цитатой

VeL писал(а):
Скажите, ну а все же с помощью sed-a это реально сделать?

Просто я это дело планирую использовать в скрипте и получение значения из строки это самая что ни есть малая подзадачка
вообще-то, sed -- это потоковый редактор текста, то есть его назначение -- это изменение текста из командной строки. в твоём случае задача подсчёта суммы заданных чисел -- это не совсем изменение текста, а наоборот -- совсем не изменение текста. поэтому больше подходят awk, perl, php. они предназначены именно для обработки текста в более общем смысле. в них нет готовых функций позиционирования текущих координат изменяемого фрагмента как в sed'е, а в sed'е это фактически главное достоинство.

вообще, юникс -- это среда, в которой следует использовать просто доступные средства -- какие окажутся в имеющейся среде, -- а вовсе не стремиться абсолютно всё сделать каким-то одним инструментом.

PS только что посмотрел man по sed'у. и не обнаружил встроенных арифметических функций для работы с текстовыми фрагментами как числами. если это так, то суммировать всё равно придётся внешними командами.
------------------------------------------------
господи, дай мне силы, чтобы работать в юниксе, терпения, чтобы не работать в винде, и мудрости, чтобы отличить современный юникс от современной винды
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Программирование Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2002 phpBB Group
Русская поддержка phpBB

 

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 495 6608306, ICQ 232284597
Пресс-релизы — pr@citforum.ru
Послать комментарий
Информация для авторов
This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2006 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...