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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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 154 155 156 157

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

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
      Шпаргалка по частым синтаксическим оборотам.

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

 

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

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



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii, на "этом" всмысле на ruby или python'e ? На bash'е я и сам могу накидать, только это не правка xml будет, а правка txt. И да, речь тут про "шашечки", а не про "ехать". Тут вопрос именно о инструментах редактирования xml
 
Alukardd,
Цитата:
В openwrt есть пакет xsltptoc.
Спасибо, погляжу

Всего записей: 2497 | Зарегистр. 19-09-2011 | Отправлено: 14:04 24-12-2024
los

Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Как с помощью sed(posix) преобразовать вывод
7z l -slt -ba file.7z
Чтобы получить
"имя файла включая путь" "значение crc"
т.е.
7z l -slt -ba file.7z | sed ....
file1 5B5B9866
dir/file2 AB470545
file3 0C35B47C
...
fileN 6B5DA473

Всего записей: 7912 | Зарегистр. 08-09-2001 | Отправлено: 14:37 30-12-2024
Pasha_ZZZ



Platinum Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
los

Цитата:
7z l -slt -ba file.7z|tr -d '\r'|grep -iE '^(Path = )|(CRC = )'|sed '$!N;s/\n/" /'|grep -iEv 'CRC = $'|sed 's/Path = /"/;s/CRC = /"/;s/$/"/'

Всего записей: 13254 | Зарегистр. 11-03-2002 | Отправлено: 15:07 30-12-2024
los

Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Pasha_ZZZ, спасибо, но
идет вызов tr(можно не использовать в моем случае), grep - два раза, кавычки.
Хочется по возможности обойтись одним sed.
 
P.S.
А первому вызову sed в вашем решении я бы предпочел 'paste - -'

Всего записей: 7912 | Зарегистр. 08-09-2001 | Отправлено: 15:38 30-12-2024
Pasha_ZZZ



Platinum Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
los
Решение рабочее, кавычки были добавлены специально, ибо
Цитата:
Чтобы получить
"имя файла включая путь" "значение crc"
их несложно удалить из всех выражений sed.
Можно и одним sed обойтись, но зачем...
 
Добавлено:
Вот с использованием только sed (несколько вызовов):

Цитата:
7z l -slt -ba file.7z|sed '/^\(Path = \)\|\(CRC = \)/!d'|sed '$!N;s/\n/ /'|sed '/CRC = $/d'|sed 's/Pa
th = //;s/CRC = //'

Всего записей: 13254 | Зарегистр. 11-03-2002 | Отправлено: 15:46 30-12-2024
los

Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Pasha_ZZZ

Цитата:
Решение рабочее, кавычки были добавлены специально, ибо

использовал их просто чтобы выделить. Но, согласен они легко удаляются.

Цитата:
Вот с использованием только sed (несколько вызовов):

первый вызов работает для gnu sed, для posix версии нет.

Всего записей: 7912 | Зарегистр. 08-09-2001 | Отправлено: 16:32 30-12-2024
Pasha_ZZZ



Platinum Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
los
Можно попробовать sed '......../!d' заменить на sed -n '........./p'

Всего записей: 13254 | Зарегистр. 11-03-2002 | Отправлено: 19:08 30-12-2024
los

Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Pasha_ZZZ, увы. Загвоздка в or/and(\|), нужно покопаться.

Всего записей: 7912 | Зарегистр. 08-09-2001 | Отправлено: 22:19 30-12-2024
Pasha_ZZZ



Platinum Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
los
Это был второй вариант. Сначала убрать экранировку со скобок, а потом и с пайпа. Ну и поиграть с вариантами, кому нужно-ненужно

Всего записей: 13254 | Зарегистр. 11-03-2002 | Отправлено: 22:22 30-12-2024
los

Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Pasha_ZZZ, так уже и сделал
sed -En '/^Path = |^CRC = /p'
работает. Спасибо за помощь.
 
 
Добавлено:
sed -E '/^Path = |^CRC = /!d'
тоже.
 
Добавлено:
Pasha_ZZZ, пытаюсь загнать все это в скрипт
7z l -slt -ba file.7z | sed -Ef sum.sed
Но что-то застрял.

Всего записей: 7912 | Зарегистр. 08-09-2001 | Отправлено: 22:30 30-12-2024
Pasha_ZZZ



Platinum Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
los

Цитата:
sed -Ef

А что за ключ -E, это ж не grep.

Всего записей: 13254 | Зарегистр. 11-03-2002 | Отправлено: 07:33 31-12-2024
Alukardd



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Pasha_ZZZ
Цитата:
А что за ключ -E, это ж не grep.
Это POSIX Extended Regex (на вопросы "что за ключ" уж ни кто кроме man'а лучше не ответит).

----------
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.

Всего записей: 6587 | Зарегистр. 28-08-2008 | Отправлено: 09:57 31-12-2024 | Исправлено: Alukardd, 09:58 31-12-2024
los

Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Pasha_ZZZ,Alukardd, как правильно из вышеприведенного решения сформировать sed скрипт? При простом
 
#!/bin/sed -Ef
/^Path = |^CRC = /!d
$!N;s/\n/ /
...
 
строка '$!N;s/\n/ /' обрабатывает изначальный файл, а не вывод от '/^Path = |^CRC = /!d'

Всего записей: 7912 | Зарегистр. 08-09-2001 | Отправлено: 10:20 31-12-2024
Alukardd



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
los
Цитата:
строка '$!N;s/\n/ /' обрабатывает изначальный файл, а не вывод от '/^Path = |^CRC = /!d'
ЧЯДНТ? УМВР.
Цитата:
Path = SAS/webp.dll Size = 359424
CRC = C3A7C3D6 Encrypted = -
Path = SAS/webpmux.dll Size = 31232
CRC = B8564E39 Encrypted = -
Path = SAS/zlib1.dll Size = 72192
CRC = 985B750B Encrypted = -

Но, я могу предложить вернуться к варианту с p и -n.

----------
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.

Всего записей: 6587 | Зарегистр. 28-08-2008 | Отправлено: 22:08 02-01-2025
los

Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alukardd, обратите внимание на наличие
Size = 359424 и Encrypted = - в выводе.
Должно быть

Цитата:
Path = SAS/webp.dll CRC = C3A7C3D6
Path = SAS/webpmux.dll CRC = B8564E39
Path = SAS/zlib1.dll CRC = 985B750B

Всего записей: 7912 | Зарегистр. 08-09-2001 | Отправлено: 09:25 03-01-2025 | Исправлено: los, 09:26 03-01-2025
Alukardd



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
los
Цитата:
обратите внимание на наличие
Size = 359424 и Encrypted = - в выводе.  
дык кто ж знает что "должно быть" (сорян если где-то 10 сообщений назад это было оговорено). По коду работает как написано.
Вот то что Вы ожидаете:
Код:
#!/bin/sed -nf
/^Path = /h
/^CRC = /{
    H
    g
    s/\n/ /
    p
}
p.s. сразу скажу, что я не пользуюсь sed'ом (для чего-то сложнее чем substitute или append) и хоть код и написал Вам, заглянув один раз в man sed, но подход я использовал обычный perl'ово awk'шный.

----------
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.

Всего записей: 6587 | Зарегистр. 28-08-2008 | Отправлено: 10:28 03-01-2025 | Исправлено: Alukardd, 11:08 03-01-2025
los

Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alukardd, спасибо. То что нужно.

Цитата:
/^CRC = /{
    H
    g

С использованием H,g я и напутал, когда пытался самостоятельно.
 
Как думаете нужно что-то изменить(сгруппировать и т.п.)?

Код:
#!/bin/sed -nf
/^Path = /h
/^CRC = /{
    H
    g
    s/\n/ /
    /CRC = $/d
    s/Path = //
    s/CRC = //
    p
}

Всего записей: 7912 | Зарегистр. 08-09-2001 | Отправлено: 11:09 03-01-2025
Alukardd



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
los
Вы бы словами писали, что хотите получить. а не только код, в котором сомневаетесь.
Вообще так сходу, кажется, что если у файла не будет CRC то и имя файла вы не увидите, что может быть не правильно. (/CRC = $/d)

----------
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.

Всего записей: 6587 | Зарегистр. 28-08-2008 | Отправлено: 11:25 03-01-2025
los

Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alukardd

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

На несколько сообщений выше задача была сформулирована.
 
7z l -slt -ba file.7z | sed -f sum.sed
Хочу получить вывод в формате
'Имя файла включая путь' 'значение crc'
 
Для сравнения либо с файлом уже содержащим подобное, либо с папкой содержащей файлы из архива и возможно другие.
 
7z l -slt -ba file.zip | sed -f sum.sed | sdiff... и т.п.

Всего записей: 7912 | Зарегистр. 08-09-2001 | Отправлено: 13:54 03-01-2025
Alukardd



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
los
Цитата:
Вообще так сходу, кажется, что если у файла не будет CRC то и имя файла вы не увидите, что может быть не правильно. (/CRC = $/d)
Так с каким умыслом Вы это добавили?

----------
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.

Всего записей: 6587 | Зарегистр. 28-08-2008 | Отправлено: 14:51 03-01-2025
Открыть новую тему     Написать ответ в эту тему

Страницы: 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 154 155 156 157

Компьютерный форум 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-2025

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru