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

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

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Привет всем
Беглый поиск не помог... Как поискать grep-ом строки с символом ">"?
Делаю что-то вроде:
# grep -lir "<td>" /var/www/html/site

Всего записей: 2 | Зарегистр. 13-01-2006 | Отправлено: 12:17 18-02-2013
kpp77

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

Код:
grep ">" /var/www/html/site

Всего записей: 72 | Зарегистр. 29-08-2012 | Отправлено: 12:27 18-02-2013
Keymaker81

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
kpp77
 
Спасибо, но я тупанул. Пример, который я привел, работает ;)

Всего записей: 2 | Зарегистр. 13-01-2006 | Отправлено: 12:45 18-02-2013
CrownRU



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Камрады, чегой-то я туплю - не могу дописать скрипт.
Вообщем есть куча серверов. На каждом сервере лежит файл в который надо с 4 (или по шаблону) строки вставить вот это :
 
P.S. Ах да, простите. Система Solaris 10 со всеми вытекающими.
 

Код:
read TERM AMSTTY WTSUSER <<ENDE
$TERM
ENDE
 
if [ "X${WTSUSER}X" = "XX" ] ; then
   WTSUSER=${AMSTTY}
fi
 
AMSTTY=`echo $AMSTTY | tr '[a-z]' '[A-Z]'`
export TERM AMSTTY WTSUSER

 
Я пытаюсь сделать это вот так (опустим логинство на кучу машин):
 

Код:
for i in file
do
perl -p -e's{\n}{\n
"read TERM AMSTTY WTSUSER <<ENDE
$TERM
ENDE
 
if [ "X{$}{WTSUSER}X" = "XX" ] ; then
   WTSUSER=${AMSTTY}
fi
 
AMSTTY=`echo $AMSTTY | tr '[a-z]' '[A-Z]'`
export TERM AMSTTY WTSUSER
"
} if $. ==3' file

 
Уже и так пробовал тоже:
 

Код:
awk '{s=$0; if( NR==3 ){ s=s "\n
read TERM AMSTTY WTSUSER <<ENDE
$TERM
ENDE
if [ "X${WTSUSER}X" = "XX" ] ; then
WTSUSER=${AMSTTY}
fi
AMSTTY=`echo $AMSTTY | tr '[a-z]' '[A-Z]'`
export TERM AMSTTY WTSUSER" } print s;}' file

 
Выдает окаянная железка вот это:

Код:
"read TERM AMSTTY WTSUSER <<ENDE
 
ENDE
 
if [ "X{X" = "XX" ] ; then
   WTSUSER=
fi
 
AMSTTY=`echo  | tr [a-z] [A-Z]`
export TERM AMSTTY WTSUSER
"
 

 
Обсосала и остатки выплюнула - не выдалось половины текста.
sed -i под Solaris не работает, но что-то мне вещует, что будет тоже самое.
 
Подскажите как проблему побороть, если кто горазд?
 
Спасибо

Всего записей: 212 | Зарегистр. 14-01-2003 | Отправлено: 20:57 18-02-2013 | Исправлено: CrownRU, 21:02 18-02-2013
kpp77

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

Код:
sed '4a\
read TERM AMSTTY WTSUSER <<ENDE \
$TERM \
ENDE \
    \
if [ "X${WTSUSER}X" = "XX" ] ; then \
  WTSUSER=${AMSTTY} \
fi \
\
 AMSTTY=`echo $AMSTTY | tr "[a-z]" "[A-Z]"` \
 export TERM AMSTTY WTSUSER\
' file

Всего записей: 72 | Зарегистр. 29-08-2012 | Отправлено: 00:33 19-02-2013 | Исправлено: kpp77, 00:33 19-02-2013
CrownRU



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

Цитата:
sed '4a\
read TERM AMSTTY WTSUSER <<ENDE \
$TERM \
ENDE \
    \
if [ "X${WTSUSER}X" = "XX" ] ; then \
  WTSUSER=${AMSTTY} \
fi \
\
 AMSTTY=`echo $AMSTTY | tr "[a-z]" "[A-Z]"` \
 export TERM AMSTTY WTSUSER\
' file  

 
Нет, не подходит - это Solaris. Там такой трюк не срабатывает - просто ничего не выдаст. Под Linux работает.

Всего записей: 212 | Зарегистр. 14-01-2003 | Отправлено: 12:05 19-02-2013 | Исправлено: CrownRU, 12:06 19-02-2013
kpp77

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Работает под FreeBSD и Linux Debian.
Соляра есть только в VW

Всего записей: 72 | Зарегистр. 29-08-2012 | Отправлено: 12:11 19-02-2013
CrownRU



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
kpp77
Все равно спасибо.  
Может кто нибудь еще сюда заглянет из аксакалов

Всего записей: 212 | Зарегистр. 14-01-2003 | Отправлено: 13:03 19-02-2013
arto

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
cat insert.txt|perl -i.orig -plne'BEGIN{$a=do{local$/;<STDIN>}}$.==5&&print$a' file.txt

Всего записей: 294 | Зарегистр. 08-02-2003 | Отправлено: 01:07 21-02-2013 | Исправлено: arto, 01:08 21-02-2013
CrownRU



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
arto
Спасибо, но не работает
Просто без ошибок или других замечаний выполняется и все.
 
Извиняюсь, ступил. Работает. Просто попробовал на пустом output файле - там строки #5 не было, потому и не сработало.
Спасибо большое!
 
А по шаблону можно так заделать? Типа со строки, содержащей что-то вставить то-то.

Всего записей: 212 | Зарегистр. 14-01-2003 | Отправлено: 13:10 22-02-2013 | Исправлено: CrownRU, 13:15 22-02-2013
arto

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
странно
 
# print -l {01..10} | ssh host "cat > /tmp/file.txt"
# print -l "AAA" "BBB" "CCC" | ssh host perl -i.orig -pne'''BEGIN{local$/;$a=<STDIN>}$.==5&&print$a''' /tmp/file.txt
# ssh host cat /tmp/file.txt
01
02
03
04
AAA
BBB
CCC
05
06
07
08
09
10
#

Всего записей: 294 | Зарегистр. 08-02-2003 | Отправлено: 14:26 22-02-2013
CrownRU



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
arto
 
Так работает, но если начнешь писать в строку 11 или 12 (если в этом случае 10 строка последняя), то файл останется без изменений.

Всего записей: 212 | Зарегистр. 14-01-2003 | Отправлено: 14:54 22-02-2013
arto

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

Всего записей: 294 | Зарегистр. 08-02-2003 | Отправлено: 15:05 22-02-2013
CrownRU



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

Цитата:
вместо проверки на моер строки вставить проверку шаблона.
 
если файл короче, то вынести проверку на длину файла еще и в END-блок

 
Спасибо Только в perl я разбираюсь как свинья, сами знаете в чем

Всего записей: 212 | Зарегистр. 14-01-2003 | Отправлено: 15:11 22-02-2013
arto

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
# print -l "AAA" "BBB" "CCC" | ssh host perl -i.orig -pne'''BEGIN{local$/;$a=<STDIN>}$.==10&&print$a;END{exit($.<10)}''' /tmp/file.txt || print -l "AAA" "BBB" "CCC" | ssh host "cat >> /tmp/file.txt"

Всего записей: 294 | Зарегистр. 08-02-2003 | Отправлено: 17:21 22-02-2013
CrownRU



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
arto
Спасибо большое!
Буду вкуривать...

Всего записей: 212 | Зарегистр. 14-01-2003 | Отправлено: 17:34 22-02-2013
tiezved

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
помогите пожалуйста заставить работать данный код под freebsd
под ubuntu всё работает на отлично а вот под фряхой ни в какую:
awk -F, '{ print $1 > "output_"$2".txt"}' 1
содержимое 1:
1,9
2,8
3,7
4,6
5,0
заранее благодарен

Всего записей: 2 | Зарегистр. 06-03-2013 | Отправлено: 13:36 06-03-2013 | Исправлено: tiezved, 19:07 06-03-2013
kpp77

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

Код:
awk -F, '{fln="output_"$2".txt"; print $1 > fln}' 1

"ни в какую"

Всего записей: 72 | Зарегистр. 29-08-2012 | Отправлено: 15:33 06-03-2013 | Исправлено: kpp77, 15:43 06-03-2013
tiezved

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
kpp77
спасибо большое работает

Всего записей: 2 | Зарегистр. 06-03-2013 | Отправлено: 19:08 06-03-2013
Sphinx114



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подскажите, как заставить корректно работать echo или другую команду (желательно покороче) в следующих случаях:
 
#!/bin/bash
x=5
echo {$x..$(($x**2))..$x}
 
echo 123 | echo

Всего записей: 1201 | Зарегистр. 26-03-2011 | Отправлено: 19:38 06-03-2013
Открыть новую тему     Написать ответ в эту тему

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