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

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

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Вот такая задача.
Есть файл digits1.txt вида:
 
200|250|1000|317|220|1500|71|340
100|2000
10
15000|231|341|441|541|10|1500
300|400|500|600|900
 
Необходимо для каждой строки вычислить минимум и максимум и выписать только их в другой файл digits2.txt вида:
 
71|1500
100|2000
10|10
10|15000
300|900
 
Спасибо.

Всего записей: 15 | Зарегистр. 25-08-2006 | Отправлено: 12:20 17-04-2016 | Исправлено: Damiurgent, 12:21 17-04-2016
Alukardd



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

Код:
awk 'BEGIN{FS=OFS="|"} {min=max=$1; for(i=1; i<=NF; i++){if ($i < min) min=$i; if($i > max) max=$i}; print min,max}' /tmp/digits1.txt > /tmp/digits2.txt


----------
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:10 17-04-2016 | Исправлено: Alukardd, 19:15 17-04-2016
Damiurgent

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alukardd
Круто! Очень лаконично.
Спасибо ещё раз.

Всего записей: 15 | Зарегистр. 25-08-2006 | Отправлено: 08:04 18-04-2016
Damiurgent

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Как результат парсинга, есть N текстовых файлов с равным количеством строк в каждом.  
 
column1.txt
column2.txt
...
columnN.txt
 
Подскажите как проще всего собрать файлы в csv. Рзделив, скажем, табуляцией.
 
Спасибо.

Всего записей: 15 | Зарегистр. 25-08-2006 | Отправлено: 22:21 19-04-2016
Damiurgent

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Damiurgent
Нашёл!
Утилитой paste
 
paste file1 file2 file3 > result.csv

Всего записей: 15 | Зарегистр. 25-08-2006 | Отправлено: 10:27 20-04-2016 | Исправлено: Damiurgent, 10:28 20-04-2016
NPC



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Всем привет. подскажите по проблеме: запускаю питон скрипт, ругается:
OSError: [Errno 13] Permission denied:: '/dev/ttyHSL0'

Всего записей: 8943 | Зарегистр. 17-02-2005 | Отправлено: 12:19 22-04-2016 | Исправлено: NPC, 12:20 22-04-2016
ASE_DAG



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
NPC> запускаю питон скрипт
 
Че-то не вижу.

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

Всего записей: 9272 | Зарегистр. 12-05-2005 | Отправлено: 12:23 22-04-2016
1karavan1

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
NPC
скрипт пытается обратиться к несуществующему устройству, да и как уже указал ASE_DAG, Вы бы показали содержимое скрипта

Всего записей: 382 | Зарегистр. 20-11-2015 | Отправлено: 12:31 22-04-2016
ASE_DAG



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
1karavan1> скрипт пытается обратиться к несуществующему устройству
 
Рискну заметить, что это сомнительно.  Все-таки «permission denied» — это не «not found».


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

Всего записей: 9272 | Зарегистр. 12-05-2005 | Отправлено: 12:39 22-04-2016
Weinaum



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
приветствую, есть немного нестандартная задача:  
на сервере в папке с подпапками найти все файлы с кириллическими символами в именах, и вывести список этих имен с путями.  
Доступ по ssh, root-a нет, только штатными средствами unix-linux.
спасибо.

Всего записей: 2152 | Зарегистр. 18-06-2006 | Отправлено: 10:32 27-04-2016
ASE_DAG



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Weinaum> unix-linux
 
Что это?
 
> с кириллическими символами в именах
 
Вы уверены, что вы смогли верно сформулировать, что&#769; вам нужно?  Это на первый взгляд довольно странная задача.
 
Но если так, то не могу предложить ничего лучше, кроме как выписать всю кириллицу с строку — к сожалению, недопарсер нашего форума почти все порежет, если я попытаюсь ее здесь привести, так что сами: на сегодняшний день это диапазоны U0400–U0527, U2DE0–U2DFF, UA640–UA697 — и подставить ее на место значка ¤:
 
$ find "$dir" -name '*[¤]*'

Всего записей: 9272 | Зарегистр. 12-05-2005 | Отправлено: 10:55 27-04-2016 | Исправлено: ASE_DAG, 11:04 27-04-2016
Weinaum



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

Цитата:
Вы уверены, что вы смогли верно сформулировать, что&#769; вам нужно?  Это на первый взгляд довольно странная задача.

Расширю - может действительно где то не так сформулировал.
Есть папка upload, в которую в течении какого-то довольно длительного времени заливались картинки, в основном это jpg, в зависимости от месяца при этом в этой папке создавались подпапки 01, 02, 03 и тд.
Помимо прочего, попали туда и файлы с русскими именами, например, Изображение097.jpg, ну или Баня.jpg
Теперь при смене сервера с этими файлами проблема - именно из-за их кириллических имен.  
изменять эти имена - транслитировать - приходится вручную, т.к. эти имена еще и в ссылках, а ссылки в базе данных. Самих файлов таких несколько десятков, но разбросаны они по большому кол-ву подпапок в upload. И всего всех файлов - не кириллических имен а вообще всех - где то около 1000. Поэтому могу просто проморгать какие то русские имена, поэтому и подумалось, что есть способ быстро найти то что "проморгал" в консоли...

Всего записей: 2152 | Зарегистр. 18-06-2006 | Отправлено: 11:34 27-04-2016
ASE_DAG



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Weinaum> именно из-за их кириллических имен
 
То есть с греческими, еврейскими, арабскими именами проблем нет, их искать не надо?  А с латиницей, которая вовсе не ограничается двадцатью шестью знаками, как?  A-умляут, s-с-гачеком, торн?  А небуквенные знаки: многоточие (…), тире (—), апостроф (’), машинописный апостроф (')?  А то и вообще перевод строки?
 
Или у вас все-таки есть список разрешенных знаков в имени?
 
$ find -iname '*[^ qwertyuiopasdfghjklzxcvbnm0-9._-]*' # дополнить по вкусу, дефис должен быть последним

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

Всего записей: 9272 | Зарегистр. 12-05-2005 | Отправлено: 12:43 27-04-2016 | Исправлено: ASE_DAG, 12:52 27-04-2016
Weinaum



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ASE_DAG
ну вроде бы только русские - спасибо, нашел вроде бы все  что надо )))

Всего записей: 2152 | Зарегистр. 18-06-2006 | Отправлено: 15:42 27-04-2016
ASE_DAG



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Weinaum, всегда пожалуйста.  Но все-таки, что у вас там за чуда такое — «unix-linux»?

Всего записей: 9272 | Зарегистр. 12-05-2005 | Отправлено: 16:38 27-04-2016 | Исправлено: ASE_DAG, 16:40 27-04-2016
Weinaum



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ASE_DAG
 
может не так выразился - не судите строго - на сервере ubuntu, правда, какой релиз не вижу, поскольку ssh кастрированный малость и lsb_release -a не находит.
Но если был бы нужен обязательно root доступ, чтобы таки найти эти файлы - скопировал бы себе на локальный полигон, который под free bsd - как то замечаю, что иногда одни и те же команды, которые по сути общие и не должны зависеть от ОС, все таки бывают в мелочах таки отличаются, кавычками там, слешем etc.
Поэтому как то так и написал, простите за неграмотность, если что - могу чтобы никого не смущать удалить )))

Всего записей: 2152 | Зарегистр. 18-06-2006 | Отправлено: 19:27 27-04-2016 | Исправлено: Weinaum, 19:28 27-04-2016
ASE_DAG



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Weinaum> если что - могу чтобы никого не смущать удалить
 
Да ну что вы.  Я именно что спрашивал, какая у вас там система.  Вы меня тоже извините, есть у меня такая вредная привычка — изъяснятся «с подковыркой».

Всего записей: 9272 | Зарегистр. 12-05-2005 | Отправлено: 20:56 27-04-2016 | Исправлено: ASE_DAG, 20:57 27-04-2016
Damiurgent

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
В результате парсинга в файл добавляется в конце одна строчка, но не всегда.
Задача сделать файл всегда равным 5 строкам если их количество 5 и более. Если менее 5, то оставлять без изменения.
Удалять строки всегда надо сверху, чтобы таким образом был сдвиг как в стеке.
Пробовал:
 
sed '6,$d' filename
 
Иногда работает, но часто вообще вычищает файл по невыясненным причинам.
Надо это мне для высвечиваемой в html подсказки тегом abbr в виде мини-графика.
Спасибо.
 
Добавлено:
sed -e :a -e '$q;N;6,$D;ba'

Всего записей: 15 | Зарегистр. 25-08-2006 | Отправлено: 12:24 03-05-2016
ASE_DAG



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Damiurgent> sed -e :a -e '$q;N;6,$D;ba'
 
Жесть какая, я так не умею. :-)
 
Но на самом деле все прозаичнее — то, что вы так замысловато описали, можно сформулировать куда проще — «вывести пять последних строк в файле».  Отсюда напрашивается очевидный способ:
 
$ tail -5 filename

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

Всего записей: 9272 | Зарегистр. 12-05-2005 | Отправлено: 17:32 03-05-2016 | Исправлено: ASE_DAG, 17:34 03-05-2016
digital422

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Работал у меня парсер xml, забирал данные с таблиц "title".

Код:
 
cat file.xml  |gawk -F "<Attr name=\"title\">" {'print $2'}
 

 
Решили создать папку, в результате структура стала такая:

Код:
 
<?xml version="1.0" encoding="UTF-8" ?>
    <Folder name="">
        <Folder name="Folder1">
    <Clip
    <Attr name="bps">16</Attr>
            <Attr name="channels">2</Attr>
    <Attr name="title">name12345</Attr>
    </Clip>
    </Folder>
    <Folder name="Folder2">
    <Clip
    <Attr name="bps">16</Attr>
            <Attr name="channels">2</Attr>
    <Attr name="title">12345name</Attr>
    </Clip>
    </Folder>
 

 
Что надо добавить для обработки таблиц только с <Folder name="Folder1"> ?

Всего записей: 351 | Зарегистр. 19-04-2003 | Отправлено: 17:26 06-05-2016
Открыть новую тему     Написать ответ в эту тему

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