Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Операционные системы » UNIX » Активные темы » UNIX Shell: sh, bash, zsh; Coreutils и ко.; sed, awk, perl;

Модерирует : ShriEkeR

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153

Открыть новую тему     Написать ответ в эту тему

digital422

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Товарищи вопрошающие! Если ваша система отлична от ГНУ, и в то же время вы желаете обойтись только дефолтными средствами, указывайте и то и другое сразу, пожалуйста.


UNIX Shell

 
   Это глобальная тема по юниксовой командной оболочке, как по интерактивной работе в командной строке, так и по шелл-скриптам. Ключевые слова: sh, bash, zsh, tcsh, busybox, readline, coreutils, cp, mv, ln, rm, ls, readlink, mkdir, touch, stat, date, test, sleep, chown, chmod, chattr, dd, df, du, env, echo, cat, less, man, grep, sort, findutils, find, locate, xargs, md5sum, cmp, diff, patch, ps, kill, killall, tar, gzip, bzip2, xz, mount, fdisk, parted, mkfs, fsck, e2fsprogs, mtools, ss, netcat, netstat, rsync, ssh, scp, sftp, lftp, ncftp, time, strace.
   Неинтерактивная обработка текста (sed, awk, perl) пока тоже здесь.
   Смотри в других ветках: wget, convert, montage, mogrify и др., gs, git, 7z, p7zip, soffice, mplayer, mencoder, vlc, vim, mc, mcedit, kioclient.
 
 

Hint! Русские маны (подустаревшие, не всегда полные и не всегда для вашей системы) можно попытаться найти на Опеннете, к примеру: bash, tar, grep.

 
Готовые решения:
  • commandlinefu.com
    Крупнейшая база полезных однострочников на командной оболочке с ранжированием на основе пользовательского голосования.
     
  • shell-fu.org
    Аналогично, но поменьше и формат записей более свободный, поэтому встречаются и однострочники, и развернутые скрипты, и просто советы.
     
  • Useful one-line scripts for sed
    Почти исчерпывающий список решений для тех случаев, когда sed незаменим. Более сложные скрипты с sed.sf.net — только для тех, кто знает толк... :)

 
Учебная литература:
  • Greg’s Wiki (http://mywiki.wooledge.org)
    Наиболее обширный авторский сборник постоянно обновляющихся материалов по Башу.

    1. Bash Pitfalls
      (Частые ошибки программирования на Баше: [1], [2], [3], [4], [5] — пер. на русский по сост. на дек. 2008 г.).
      Рассмотрены преимущественно ошибки, возникающие из-за непонимания отличия шелла от «нормальных» скриптовых языков. Если вы уже владеете, например, Перлом, то это вполне может быть ваше первое руководство для ознакомления с Башем.
    2. Bash FAQ
    3. Bash Guide
    4. Bash Reference Sheet
      Шпаргалка по частым синтаксическим оборотам.

 
Классическая учебная литература:
С одной стороны не упомянуть эти издания нельзя, с другой — они настолько устарели, что едва ли их можно рекомендовать в роли учебника.

 

Смело правьте и дополняйте шапку, однако не забывайте отписываться об исправлениях и сохранять исходный вариант под #.
Первый пост темы имел вид...

Всего записей: 351 | Зарегистр. 19-04-2003 | Отправлено: 18:51 16-05-2008 | Исправлено: qw12, 09:42 24-03-2020
ASE_DAG



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Maximus777
 
О господи!
 

 
Дайте пример файла, и что и из него надо извлечь.

----------
Dmitry Alexandrov <321942@gmail.com> [PGP] [BTC]

Всего записей: 9272 | Зарегистр. 12-05-2005 | Отправлено: 21:15 04-05-2014
Maximus777

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Пример файла.
То, что я пытаюсь оттуда вынуть, относится к дню и ночи. Вот день:

Код:
<day_part typeid="2" type="day">
<temperature_from>
12
</temperature_from>
<temperature_to>
14
</temperature_to>
<temperature-data>

Моя цель - "14" в чистом виде.

Всего записей: 674 | Зарегистр. 27-07-2007 | Отправлено: 21:38 04-05-2014 | Исправлено: Maximus777, 21:39 04-05-2014
Alukardd



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Maximus777
Доступ к файлу запрещён — 403 ошибка.
 
Добавлено:
Maximus777
Вообще т. ASE_DAG прав насчёт попытки парсить XML регулярками...
По тому примеру что Вы дали в тексте сообщения это делается так:
Код:
#!/usr/bin/env ruby
 
require 'nokogiri'
to_parse = Nokogiri::XML(File.open("/tmp/src"))
res = to_parse.at_xpath('//day_part//temperature_to').content
print res


----------
Microsoft gives you windows, linuх gives you the whole house...
I've been using Vim for about 4 years now, mostly because I can't figure out how to exit it.

Всего записей: 6563 | Зарегистр. 28-08-2008 | Отправлено: 22:03 04-05-2014 | Исправлено: Alukardd, 22:18 04-05-2014
Maximus777

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Другой пример.
Почему-то Челябу закрыли, хотя я открывал ссылку ...
 
Или можно вот тут любой взять город.
 
А вот кусок файла, ответственного за наполнение данными (но это парсинг gismeteo):

Код:
<data_day1 url="url1"
        name="grep -A 8 weekday | head -n 9 | tail -n 9 | grep weekday | sed -e &quot;s/.*weekday[^&gt;]*&gt;\([^&lt;]*\).*/\1/&quot;"
        temperature_low="grep -A 8 weekday | head -n 9 | tail -n 9 | grep temp | head -n 1 | sed -e &quot;s/&amp;minus;/-/&quot; | sed -e &quot;s/.*temp c[^&gt;]*&gt;+*\([-0-9]\+\).*/\1/&quot;"
        temperature_high="grep -A 8 weekday | head -n 9 | tail -n 9 | grep temp | tail -n 1 | sed -e &quot;s/&amp;minus;/-/&quot; | sed -e &quot;s/.*temp c[^&gt;]*&gt;+*\([-0-9]\+\).*/\1/&quot;"
        icon="grep -A 8 weekday | head -n 9 | tail -n 9 | grep png | tail -n 1 | sed -e &quot;s/.*\(http[^\&quot;]*\).*/\1/&quot;"
        icon_code="grep -A 8 weekday | head -n 9 | tail -n 9 | grep png | tail -n 1 | sed -e &quot;s/.*\(http[^\&quot;]*\).*/\1/&quot; | sed &apos;s/.*new\/\(.*\)\.png.*/\1/&apos;"
        icon_text="grep -A 8 weekday | head -n 9 | tail -n 9 | grep cltext | tail -n 1 | sed -e &quot;s/.*cltext[^&gt;]*&gt;\([^&lt;]*\).*/\1/&quot;"

Видите, сам xml вполне безобидный? Или предлагаете всё же руби использовать?

Всего записей: 674 | Зарегистр. 27-07-2007 | Отправлено: 22:30 04-05-2014 | Исправлено: Maximus777, 22:32 04-05-2014
Alukardd



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Maximus777
По прямой ссылке всё та же 403 ошибка. А Что значит взять любой город и как этим пользоваться я понятия не имею.
 
Просто покажите из каких данных и какие вы хотите получить и не схематично, а дословно.
 
Если выборка действительно идёт из XML дерева с атрибутами, а не просто по ключевому слову, то да, я рекомендую любой приятный Вам ЯП с библиотекой для парсинга XML. Будет это ruby, python, C или Java абсолютно не имеет значения, ну разве что скриптовые языки более удобны в данной ситуации.

----------
Microsoft gives you windows, linuх gives you the whole house...
I've been using Vim for about 4 years now, mostly because I can't figure out how to exit it.

Всего записей: 6563 | Зарегистр. 28-08-2008 | Отправлено: 23:21 04-05-2014
ASE_DAG



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Maximus777> Или предлагаете всё же руби использовать?
 
Если вас напрягает необходимость набрасывать отдельный ruby-скрипт, то ничего не мешает вызвать ту же nokogiri из шелла:
 
$ cat 777.xml
<day_part typeid="2" type="day">
<temperature_from>
12
</temperature_from>
<temperature_to>
14
</temperature_to>
<temperature-data>  
 
$ nokogiri -e 'p $_.at_xpath("//day_part//temperature_to").content.delete!("\n")' 777.xml
"14"

 
Добавлено:
Другой вариант с использованием средств, доступных в Дебиане:
 
$ tidy -quiet -xml 777.xml | xmllint --xpath '//day_part//temperature_to/node()' -
14



----------
Dmitry Alexandrov <321942@gmail.com> [PGP] [BTC]

Всего записей: 9272 | Зарегистр. 12-05-2005 | Отправлено: 00:06 05-05-2014
Maximus777

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alukardd
Цитата:
По прямой ссылке всё та же 403 ошибка. А Что значит взять любой город и как этим пользоваться я понятия не имею.

Перезалил файл сюда. Там просто id города в ссылку подставляется и всё. С чем связана 403 ошибка не знаю. Вчера Челяба не открывалась, сегодня с первого раза.
 

Цитата:
Просто покажите из каких данных и какие вы хотите получить и не схематично, а дословно.

Из этого xml-файла мне нужна температура каждого из 10-ти дней, ночная и дневная. Т.е. день, это тег <day date="2014-05-05">. Температура дня в нём:
<day_part typeid="2" type="day">
      <temperature_from>12</temperature_from>
      <temperature_to>19</temperature_to>
19
 
Температура ночью:
<day_part typeid="4" type="night">
      <temperature_from>16</temperature_from>
      <temperature_to>18</temperature_to>
18.
 
ASE_DAG
Цитата:
nokogiri -e 'p $_.at_xpath("//day_part//temperature_to").content.delete!("\n")' 777.xml


Код:
nokogiri -e 'p $_.at_xpath("//day_part//temperature_to").content.delete!("\n")' 28642.xml  
<main>:1:in `<main>': undefined method `content' for nil:NilClass (NoMethodError)
        from /usr/bin/nokogiri:71:in `eval'
        from /usr/bin/nokogiri:71:in `<main>'

 

Цитата:
tidy -quiet -xml 777.xml | xmllint --xpath '//day_part//temperature_to/node()' -

Куча ошибок такого вида:

Код:
line 2271 column 64 - Warning: replacing invalid character code 140
line 2272 column 35 - Warning: replacing invalid character code 128

Всего записей: 674 | Зарегистр. 27-07-2007 | Отправлено: 18:39 05-05-2014
Alex_Piggy

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Доброе время, Maximus777
Однострочный монстрик -  
0<28642.xml sed -r -n -e "/<day date/,/<\/day>/{/<day date/{s/.*\x22(.*)\x22.*/\1/g;H};/<day_part typeid=\x22[24]\x22/,/<\/day_part/{/<temperature_to/{s/.*>(.*).*<.*/\1/g;H;}};/<\/day>/{s/.*/@/;H}};${x;s/\n+/\t/g;s/@/\n/g;p}"

Всего записей: 1891 | Зарегистр. 07-08-2002 | Отправлено: 19:45 05-05-2014
Alukardd



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
А вот Nokogiri зараза что-то не даётся... Он документ этот распарсил, но обращаться по xpath'у не даёт... Хз что ему надо!

----------
Microsoft gives you windows, linuх gives you the whole house...
I've been using Vim for about 4 years now, mostly because I can't figure out how to exit it.

Всего записей: 6563 | Зарегистр. 28-08-2008 | Отправлено: 21:12 05-05-2014
Maximus777

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alex_Piggy, и наше Вам с кисточкой!
 
Результат выполнения:

Код:
bash: /<day date/,/<\/day>/{/<day date/{s/.*\x22(.*)\x22.*/\1/g;H};/<day_part typeid=\x22[24]\x22/,/<\/day_part/{/<temperature_to/{s/.*>(.*).*<.*/\1/g;H;}};/<\/day>/{s/.*/@/;H}};${x;s/\n+/\t/g;s/@/\n/g;p}: неправильная подстановка

Сейчас уже глаза слипаются. Завтра попробую разобраться. Спасибо за монстрика.

Всего записей: 674 | Зарегистр. 27-07-2007 | Отправлено: 22:10 05-05-2014
ASE_DAG



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Maximus777> nokogiri -e 'p $_.at_xpath("//day_part//temperature_to").content.delete!("\n")' 28642.xml
 
Какого лешего вы применяете XPath, корректный для одного файла, к совершенно другому?
 
$ nokogiri -e 'p $_.xpath("//forecast/day[@date=\"2014-05-05\"]/day_part[@type=\"day\"]/temperature_to").text' < 28642.xml
$ nokogiri -e 'p $_.xpath("//day[@date=\"2014-05-05\"]/day_part[@type=\"day\"]/temperature_to").text' < 28642.xml
"10"

 
Вы так, собственно, и не удосужились написать, какой вам нужен результат. Допустим, что CSV-файл. Тогда проще было написать все это в виде XSLT-запроса, но если вы все-таки желаете командной строкой, то есть xmlstarlet sel, позволяющий все то же самое, что XSLT, но еще дающий столь почитаемую вами возможность сделать все в кашу при помощи однострочного синтаксиса:
 
$ xmlstarlet sel -t -m '/_:forecast/_:day' -v '@date' -o ',' -v '_:day_part[@type="day"]/_:temperature_to' -o ',' -v '_:day_part[@type="night"]/_:temperature_to' -n 28642.xml
$ xmlstarlet sel -t -m '//_:day' -v '@date' -o ',' -v '_:day_part[@type="day"]/_:temperature_to' -o ',' -v '_:day_part[@type="night"]/_:temperature_to' -n 28642.xml
2014-05-05,10,10
2014-05-06,19,18
2014-05-07,21,12
2014-05-08,11,12
2014-05-09,13,17
2014-05-10,17,19
2014-05-11,16,17
2014-05-12,16,19
2014-05-13,20,24
2014-05-14,21,23

 
Комментарии нужны?

----------
Dmitry Alexandrov <321942@gmail.com> [PGP] [BTC]

Всего записей: 9272 | Зарегистр. 12-05-2005 | Отправлено: 23:16 05-05-2014 | Исправлено: ASE_DAG, 00:38 06-05-2014
Alex_Piggy

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Maximus777
Прошу прощения. Замените двойные кавычки на одинарные.

Всего записей: 1891 | Зарегистр. 07-08-2002 | Отправлено: 23:52 05-05-2014
Alukardd



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ASE_DAG
А вот //forecast можно кстати опустить, в этом вся суть удвоения слэша (//).
 
Но я так и не понял почему внутри .rb скрипта оно у меня с этой xml'кой не работает. Я даже пытался это понять сидя в irb, но так и не понял.

----------
Microsoft gives you windows, linuх gives you the whole house...
I've been using Vim for about 4 years now, mostly because I can't figure out how to exit it.

Всего записей: 6563 | Зарегистр. 28-08-2008 | Отправлено: 00:07 06-05-2014
ASE_DAG



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alukardd, действительно! ОК, опустил.
 
Ну можно попытаться разобраться со скриптом, ежели желаете.

----------
Dmitry Alexandrov <321942@gmail.com> [PGP] [BTC]

Всего записей: 9272 | Зарегистр. 12-05-2005 | Отправлено: 00:40 06-05-2014
Maximus777

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ASE_DAG
Цитата:
Комментарии нужны?

Нет. Спасибо. Мне нужны только значения температур, но тут я уже сам.
 
Alex_Piggy
Цитата:
Прошу прощения. Замените двойные кавычки на одинарные.

Класс! Работает!
xmlstarlet тоже весело отработал, но мне монстрики нравятся Впрочем, буду оба способа использовать.

Всего записей: 674 | Зарегистр. 27-07-2007 | Отправлено: 18:52 06-05-2014
kpp77

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подскажите по curl, выполняю:
# curl -vv -3 -i -k -c "cookies.txt" -A "$UA" "https://my.kyivstar.ua/tbmb/login/perform.do"
получаю:

Код:
* Hostname was NOT found in DNS cache
*   Trying 193.41.60.38...
* Connected to my.kyivstar.ua (193.41.60.38) port 443 (#0)
* successfully set certificate verify locations:
*   CAfile: /usr/local/share/certs/ca-root-nss.crt
  CApath: none
* SSLv3, TLS handshake, Client hello (1):
* SSLv3, TLS alert, Server hello (2):
* error:14094410:SSL routines:SSL3_READ_BYTES:sslv3 alert handshake failure
* Closing connection 0
curl: (35) error:14094410:SSL routines:SSL3_READ_BYTES:sslv3 alert handshake failure

 
где
UA="Mozilla/5.0 (X11; Linux x86_64; rv:10.0.6) Gecko/20100101 Firefox/10.0.6 Iceweasel/10.0.6"

Всего записей: 72 | Зарегистр. 29-08-2012 | Отправлено: 17:43 12-05-2014
Alukardd



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
kpp77
Сертификаты корневые в системе имеются? В debian пакет называется ca-certificates.

----------
Microsoft gives you windows, linuх gives you the whole house...
I've been using Vim for about 4 years now, mostly because I can't figure out how to exit it.

Всего записей: 6563 | Зарегистр. 28-08-2008 | Отправлено: 19:01 12-05-2014
kpp77

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alukardd
Корневые сертификаты присутствуют, обновлены сегодня:

Код:
* successfully set certificate verify locations:  
*   CAfile: /usr/local/share/certs/ca-root-nss.crt

Всего записей: 72 | Зарегистр. 29-08-2012 | Отправлено: 23:21 12-05-2014 | Исправлено: kpp77, 23:28 12-05-2014
Alukardd



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
kpp77
Пробуем добавить опцию --cipher RC4-MD5
Если не сработает тогда...
Не нравится мне всё же что curl скомпилен для использования .crt файла, попробуйте указать ему опцию -capath "/etc/ssl/certs" (путь может отличаться в Вашей системе)

----------
Microsoft gives you windows, linuх gives you the whole house...
I've been using Vim for about 4 years now, mostly because I can't figure out how to exit it.

Всего записей: 6563 | Зарегистр. 28-08-2008 | Отправлено: 08:27 13-05-2014
arto

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Может быть вы забанены?
У меня и curl качает, и wget.

Всего записей: 294 | Зарегистр. 08-02-2003 | Отправлено: 08:33 13-05-2014
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153

Компьютерный форум Ru.Board » Операционные системы » UNIX » Активные темы » UNIX Shell: sh, bash, zsh; Coreutils и ко.; sed, awk, perl;


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru