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

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

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

Цитата:
Нет, только через :

спасибо, перенос строки в таком случае как правильно сделать?
test:test1:test2
\:test3 ?
 

Всего записей: 7334 | Зарегистр. 08-09-2001 | Отправлено: 17:07 23-04-2020
Pasha_ZZZ



Platinum Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
los
Например так
Цитата:
test:test1:test2:\
test3 ?
Надо ж перевод строки заэкранить

Всего записей: 12398 | Зарегистр. 11-03-2002 | Отправлено: 17:16 23-04-2020
los

Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Pasha_ZZZ,
спасибо, перепутал Есть небольшой вопрос по файлу filetype.vim с его синтаксисом не сталкивались?

Всего записей: 7334 | Зарегистр. 08-09-2001 | Отправлено: 17:23 23-04-2020
CrownRU



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Всем привет,
такая задачка образовалась. Есть несколько бинарных BFS файлов от TSM, каждый файл от 10 до 25 гигабайт. В них находятся миллионы PDF файлов.
Цель - выделить эти PDF в отдельные директории. Т.е. от начала файла %PDF-1.? до конца %%EOF.
Я написал следующее:

Код:
awk -v FS="(%PDF-1.4|%%EOF)" '{print $2}' FILE > OUTPUTDIR

Вроде работает на небольших файлах ~500МВ. Проблема в том, что на таких огромных файлах система захлебывается - процесс висит, но ничего не делает. На выходные оставил - дохлый номер
Как решить данную проблему?

Всего записей: 212 | Зарегистр. 14-01-2003 | Отправлено: 12:10 27-04-2020
karavan



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
CrownRU
Никогда так не делал, но попробовал бы следующее.
1. Определиться с объемом входного куска, на котором парсинг успешен и не захлебывается.
2. В цикле, пока не случится окончание большого файла, с помощью dd и его параметра seek откусываем кусочек.
Кусочек парсим с запоминанием позиции конца последней pdf в куске.
На следующей итерации откусывания подставляем сумму обработанного объема и окончания из предыдущей итерации в параметр seek команды dd.

Всего записей: 1962 | Зарегистр. 02-12-2011 | Отправлено: 13:32 27-04-2020
CrownRU



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
karavan
Тоже думал, но надеялся/надеюсь, что есть другое решение.

Всего записей: 212 | Зарегистр. 14-01-2003 | Отправлено: 13:43 27-04-2020
Alex_Piggy

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Доброе время, CrownRU
1. Python допускается?
2. Ваше решение на csplit UNIX Shell: sh, bash, zsh; Coreutils и ко.; sed, awk, perl;?

Всего записей: 1891 | Зарегистр. 07-08-2002 | Отправлено: 13:53 27-04-2020
data man



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

Цитата:
BFS файлов от TSM

Что это такое?

----------
Любой достаточно развитый тролль неотличим от подлинно помешанного на какой-либо идее.
Кекс. Антибиотики. Ламбада.

Всего записей: 1696 | Зарегистр. 13-10-2005 | Отправлено: 13:54 27-04-2020
los

Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
CrownRU,
не проще ли использовать программы типа foremost, scalpel, bulk_extractor etc.?

Всего записей: 7334 | Зарегистр. 08-09-2001 | Отправлено: 14:48 27-04-2020
CrownRU



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alex_Piggy
Конечно допускается. Питон есть.
 
los
Может и проще, но я с ними не работал. Поэтому и спрашиваю совета.
 
data man
Spectrum Protect или в девичестве TSM. Backup solution.

Всего записей: 212 | Зарегистр. 14-01-2003 | Отправлено: 10:23 28-04-2020
los

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

Цитата:
Может и проще, но я с ними не работал.

что мешает попробовать?

Цитата:
Поэтому и спрашиваю совета.  

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

Всего записей: 7334 | Зарегистр. 08-09-2001 | Отправлено: 11:15 28-04-2020
Alex_Piggy

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
CrownRU
Что-то такое
https://www.upload.ee/files/11582482/split_BSF_to_PDFS.7z.html
Сохраняет пдф в папку и пишет лог.  
Прошу прощения за грязный код...

Всего записей: 1891 | Зарегистр. 07-08-2002 | Отправлено: 11:56 28-04-2020
CrownRU



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alex_Piggy
Не могу зайти
 
los
Спасибо за наводку. Вроде foremost работает.

Всего записей: 212 | Зарегистр. 14-01-2003 | Отправлено: 13:25 28-04-2020
los

Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
CrownRU,
photorec достаточно шустрая программа, да и scalpel поробуйте - возможно будет шустрее он поновее, как и bulk_extractor.

Всего записей: 7334 | Зарегистр. 08-09-2001 | Отправлено: 13:43 28-04-2020
data man



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ещё пара утилит на Rustе:
Desed - Debugger for Sed: demystify and debug your sed scripts, from comfort of your terminal.
Для Windows сборок нет, просите автора.


grex - A command-line tool and library for generating regular expressions from user-provided test cases.
Есть сборка для Windows.

----------
Любой достаточно развитый тролль неотличим от подлинно помешанного на какой-либо идее.
Кекс. Антибиотики. Ламбада.

Всего записей: 1696 | Зарегистр. 13-10-2005 | Отправлено: 09:34 30-04-2020 | Исправлено: data man, 10:22 30-04-2020
Baltazar500



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Имеется следующий тестовый текстовый блок
Код:
aaa bbb ccc
iface=wlan0 ident=[{type=WIFI, subType=COMBINED, networkId=Test}]
aaa bbb ccc
  iface=wlan0 ident=[{type=WIFI, subType=COMBINED, networkId=Test}]
aaa bbb ccc
  iface=wlan0 ident=[{type=WIFI, subType=COMBINED, networkId=Test}]
aaa bbb ccc
  iface=wlan0 ident=[{type=WIFI, subType=COMBINED, networkId=Test}]
aaa bbb ccc
из которого посредством awk нужно вытащить "networkId" которое имеет значение Test. Мне это практически удалось при помощи такого выражения
Код:
awk 'match($0, /iface=wlan.*networkId/) && !seen[$0]++ && match($0, /networkId=\w*/){FN = substr($0, RSTART, RLENGTH); split(FN,a,"="); print a[2]}'
 
которое было составлено на основе своих эеспериментов и данных из гугла (т.е. часть кода я чуток недопонимаю пока). Как мне воткнуть фильтрацию от дубликатов "!seen[$0]++" перед финальным "print'ом" ? Из первой итерации его можно убрать, т.к. фильтрация нужна именно в конце, а не в начале.

Всего записей: 2090 | Зарегистр. 19-09-2011 | Отправлено: 18:12 01-05-2020
Pasha_ZZZ



Platinum Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Baltazar500
А в чем ваша привязанность к awk? (sed | grep) + uniq например справятся.

Всего записей: 12398 | Зарегистр. 11-03-2002 | Отправлено: 18:19 01-05-2020
Baltazar500



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Pasha_ZZZ, тут задача именно в отработке через awk без применения дополнительных утилит.

Всего записей: 2090 | Зарегистр. 19-09-2011 | Отправлено: 18:32 01-05-2020
Baltazar500



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
В ЛС подкинули рабочее решение (спасибо)
Цитата:
awk "$0~/iface=wlan/&&match($0,/networkId=([^}]+)/,tmparr){res[tmparr[1]]=1}END{for(i in res)print i}"
авось кроме меня кому пригодится. И краткий разбор алгоритма работы выражения
Цитата:
"$0 ~ /iface=wlan/" - еще одна форма/запись регекспа.
При проверке строки на соотвтествие match заполняет массив tmparr.
В awk ассоциативные массивы - и фильтровать дубликаты можно внося требуемое в ключ, а не в значение.
В конце файла распечатываются все ключи массива.

Всего записей: 2090 | Зарегистр. 19-09-2011 | Отправлено: 16:45 03-05-2020
ndch

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

Всего записей: 6491 | Зарегистр. 31-08-2008 | Отправлено: 08:48 19-05-2020 | Исправлено: ndch, 08:56 19-05-2020
Открыть новую тему     Написать ответ в эту тему

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