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

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

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

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8

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

alyent



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Обратите, пожалуйста, внимание, что существует более активная на настоящий момент смежная ветка.

Там же можно ознакомится со списком примечательной литературы по теме.
Первый пост этой ветки имел вид...

Всего записей: 1087 | Зарегистр. 09-03-2002 | Отправлено: 10:04 02-02-2003 | Исправлено: ASE_DAG, 19:08 12-07-2013
vjunk

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

Код:
#!/bin/sh -
STR='Hello, $i'
value='test'
i=$value
echo "Now \$i is $i"
eval "echo $STR"


Всего записей: 303 | Зарегистр. 23-02-2005 | Отправлено: 19:55 07-10-2010
Jugador

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Надо выцепить мак адресс вай фай точки, к которой подключен.
пробую...

Код:
 
root@bt:~# iwconfig |grep Point| awk '{print $6}'
lo        no wireless extensions.
 
wmaster0  no wireless extensions.
 
wmaster1  no wireless extensions.
 
Not-Associated
38:22:9D:04:9E:7D
 

 
 
Как взять последнюю строчку? Почему-то кроме двух последних строк еще и верхние попадают ...  
ifconfig  и airodump-ng  не предлагать )

Код:
 
root@bt:~# iwconfig
lo        no wireless extensions.
 
wmaster0  no wireless extensions.
 
wlan0     IEEE 802.11bg  ESSID:"dora"
          Mode:Managed  Frequency:2.412 GHz  Access Point: Not-Associated
          Tx-Power=27 dBm
          Retry min limit:7   RTS thr:off   Fragment thr:off
          Encryption key:off
          Power Management:off
          Link Quality:0  Signal level:0  Noise level:0
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:0  Invalid misc:0   Missed beacon:0
 
wmaster1  no wireless extensions.
 
wlan1     IEEE 802.11bg  ESSID:"dora"
          Mode:Managed  Frequency:2.412 GHz  Access Point: 38:22:9D:04:9E:7D
          Bit Rate=11 Mb/s   Tx-Power=27 dBm
          Retry min limit:7   RTS thr:off   Fragment thr:off
          Encryption key:6E61-7A63-61   Security mode:open
          Power Management:off
          Link Quality=19/70  Signal level=-91 dBm  Noise level=-104 dBm
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:0  Invalid misc:0   Missed beacon:0
 

Всего записей: 136 | Зарегистр. 14-04-2004 | Отправлено: 16:47 09-11-2010 | Исправлено: Jugador, 16:51 09-11-2010
vjunk

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

Код:
iwconfig 2>/dev/null | grep Point | awk '{print $6}'

Всего записей: 303 | Зарегистр. 23-02-2005 | Отправлено: 23:01 09-11-2010
iv13581



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Обясните смысл:
 awk '!x[$0]++' file.txt
Эта команда удаляет повторяьщиеся строки из файла, но как?!

Всего записей: 5 | Зарегистр. 21-12-2010 | Отправлено: 09:12 21-12-2010
iv13581



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

Цитата:
 awk '!x[$0]++' file.txt  

 - так что, никто не смог?!
 Ну я сам выяснил:
 Эта умность создает хеш с индексом, являющимся строкой из файла.
 Таким образом повторение строки создает уже существующий элемент хеша (Более точно, массива со свободной индексацией.)
 Имя массива - х, а чтоб распечатывать первое появление каждой уникальной строки, поставленно отрицание - !. Т.е., если элемент еще не существует, то его значение цонвертируется в числовое, как 0, что отрицанием принимается как 'истина', и авк выполняет действие по-умолчанию - печатает входную строку.  
 Одновременно, елементу массива просваивается инкрементированное значение (оператором ++), и, значит, следущий раз отрицание будет признанно ложью, и строка не будет распечатана.
 
 Во как!
 
 Т.е. в результате печатается файл в оригинальном порядке (в отличии от ..|sort|uniq) без повторов!

Всего записей: 5 | Зарегистр. 21-12-2010 | Отправлено: 20:35 23-12-2010
Nekt

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

Код:
 
#!/bin/bash
 
export APP_HOME=/Volumes/Untitled/downloads/src/VilloNanny/
cd $APP_HOME
 
 
CP=$APP_HOME/config
 
for DIST in $( ls $APP_HOME/dist/*.jar); do
   CP=$CP:$DIST
done
 
for LIB in $( ls $APP_HOME/lib/*.jar); do
   CP=$CP:$LIB
done
 
java -cp $CP -DAPP_HOME=$APP_HOME net.villonanny.LanguageConfigHelper -utf8 "$*"


Код:
: command not foundgHelper.command: line 2:  
: No such file or directorycommand: line 4: cd: /Users/Wolf/Documents/VilloNanny
: command not foundgHelper.command: line 5:  
: command not foundgHelper.command: line 7:  
'ools/languageConfigHelper.command: line 8: syntax error near unexpected token `do
'ools/languageConfigHelper.command: line 8: `for DIST in $( ls $APP_HOME/dist/*.jar); do
 

В чем ошибка?!!?  
Заранее спасибо, уже третьи сутки пытаюсь найти загвоздку....  
P.S.  
делал даже так,  

Код:
 
#!/bin/bash
 
export APP_HOME=$PWD
 
 
CP=$APP_HOME/config
 
for DIST in $( ls $APP_HOME/dist/*.jar); do
   CP=$CP:$DIST
done
 
for LIB in $( ls $APP_HOME/lib/*.jar); do
   CP=$CP:$LIB
done
 
java -cp $CP -DAPP_HOME=$APP_HOME net.villonanny.LanguageConfigHelper -utf8 "$*"

Всего записей: 640 | Зарегистр. 24-01-2006 | Отправлено: 21:16 24-12-2010 | Исправлено: Nekt, 21:22 24-12-2010
vjunk

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Nekt
Концы строк в нормальный (юниксовый) вид приведи.

Всего записей: 303 | Зарегистр. 23-02-2005 | Отправлено: 23:28 26-12-2010
Nekt

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

Всего записей: 640 | Зарегистр. 24-01-2006 | Отправлено: 16:36 27-12-2010 | Исправлено: Nekt, 16:45 27-12-2010
Weinaum



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
есть два сайта-зеркала,скажем, mysite.ru и mysite.com,  синроню через rsync, но вот есть одна засада.
Есть одна папка, включает в себя подпапки, исключать из синхронизации нельзя, так как изменения происходят довольно существенные.
Итак, в этих подпапках внутри основной папки находятся по одному или несколько xml-файлов, которые изменяются, но кроме всего прочего, они содержат несколько строк - путей соответственно с полными урлами. Таким образом, после синхронизации соотвественно косяки из за этих урлов.
Таким образом, нужен скрипт, который бы искал в исходной папке рекурсивно по всем подпакам строки с однми урлом и заменял эти урлы на другие...
спасибо заранее

Всего записей: 2152 | Зарегистр. 18-06-2006 | Отправлено: 23:38 05-01-2011
Weinaum



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Оказывается, все вроде просто, find и sed все делают. Осталось только до ума довести.
Например, команда вида  

Код:
find "корневая_папка_для_поиска" -name "*.xml" -print0 | xargs -0 sed -i -e "s/текст_для_поиска/заменяем_на/g"

все делает, но при этом копирует все исходные файлы - до вснесения в них изменений и кладет их рядом с добавлением -е в конец имени файла. А мне не нужны двойные файлы, зачем они?
Если же опцию е не применять, то не срабатывает, выходит ошибка типа  

Код:
sed: 1: "/home/wins/skin/me ...": undefined label 'im/skin/media/xml/media.xml'

И еще, хотелось бы иметь лог, желательно такой: после того, как find нашел данные вхождения, записался бы лог где, в каких файлах что было найдено, после замены - соответственно что стало. Вроде как grep тут нужен, но чет я не соображу, как правильно и красиво все оформить.
Если у кого есть мысли, помогайте, плз.

Всего записей: 2152 | Зарегистр. 18-06-2006 | Отправлено: 12:27 07-01-2011
danb2

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подскажите плиз как в команду которая имеет два входных параметра - файла, подставить вместо файлов вывод других команд?
 
Например:
 

Код:
paste [FILE1] [FILE2]

 
вместо FILE1 - вывод команды ls, а вместо FILE2 - вывод команды du

Всего записей: 2 | Зарегистр. 08-12-2008 | Отправлено: 11:02 20-01-2011
tovsam93

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
добрый вечер, прошу помощи, нужно написать скрипт на bash, после запуска должна прописоваться адрес каталога, а так же размер файла в блоках и скрипт должен скказать есть ли файлы размер которых меньше заданного числа блоков, нужна помощь
я уже писал в одной ветке это сообщение извините, просто это тема слегка живее той)

Всего записей: 28 | Зарегистр. 06-03-2011 | Отправлено: 22:11 07-04-2011
ASE_DAG



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
tovsam93
> я уже писал в одной ветке это сообщение
В какой? Вы его там удалили или указали, что продублировали еще и здесь?
 
> это тема слегка живее той
Вот еще более живая тема: UNIX Shell: sh, bash, zsh; Coreutils и ко.; sed, awk, perl;
 
А вопрос-то ваш не очень понятен. Вам надо найти в заданной директории файлы меньше заданного размера? Если так, то, например:
 
$ find /tmp -maxdepth 1 -size -100
 
P.S. Кстати, что вы называете блоком: полукилобайт (как выше) или переменное число?

Всего записей: 9272 | Зарегистр. 12-05-2005 | Отправлено: 22:29 07-04-2011 | Исправлено: ASE_DAG, 22:41 07-04-2011
tovsam93

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ASE_DAG
блок переменное число
 
и вопрос, как удалять сообщения?

Всего записей: 28 | Зарегистр. 06-03-2011 | Отправлено: 07:09 09-04-2011 | Исправлено: tovsam93, 07:10 09-04-2011
ASE_DAG



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
tovsam93
> как удалять сообщения?
Отредактировать, заменив содержимое на «del». ;)

 
По вопросу — все, вы разобрались?

Всего записей: 9272 | Зарегистр. 12-05-2005 | Отправлено: 15:30 09-04-2011
ydaf

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Нужна подсказка по sed либо awk.
Есть строка вида  
"тарам пам пам 1819  21-04-2011 12:32:30 парам там там пользователь 564856 там"
"пам парам 6 21.04.2011 пользователь 564856 там"
 
Как из этих строк вытянуть подстроки  
21-04-2011  
21.04.2011
564856.
 

Всего записей: 13 | Зарегистр. 16-10-2007 | Отправлено: 12:36 21-04-2011 | Исправлено: ydaf, 12:37 21-04-2011
ASE_DAG



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ydaf
$ sed -n 's/^.* \([0-9]\{2\}[.-][0-9]\{2\}[.-][0-9]\{4\}\) .* \([0-9]\+\) .*$/\1\n\2/p' pamparam
 
И на будущее: формулируйте задачу на реальном примере.

Всего записей: 9272 | Зарегистр. 12-05-2005 | Отправлено: 13:32 21-04-2011
ydaf

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ASE_DAG,
Спасибо огромное, за ваше решение. можите его прокоментировать?
 
$ sed -n 's/^.* \([0-9]\{2\}[.-][0-9]\{2\}[.-][0-9]\{4\}\) .*$/\1/p' - вытягивает дату
 
$ sed -n 's/^.* \([0-9]\{6\}\) .*$/\1/p' -вытягивает последнюю последовательность из 6 символов  
 
возможно ли учесть в первом случае что дата состоит из dd-mm-yy или yyyy-mm-dd, а не dd-mm-yyyy  
возможно ли учесть во втором случае чтобы выдавались 5 символов после определенного слова(например Login:565266)
 
вот пример строки
 
2011-04-09 07:26:39,765 INFO  User id:061028; Action:Login; Info:Session id:*****BC0AFEC3B0BC5C9B317D214602***;
 
 
PS Вытягивать данные строки из подстроки я смог сделать, но очень на мой взгляд кривовато.
По этому и обратился на форум к гуру sed'а  

Всего записей: 13 | Зарегистр. 16-10-2007 | Отправлено: 17:35 21-04-2011 | Исправлено: ydaf, 18:05 21-04-2011
ASE_DAG



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ydaf
> можите его прокоментировать?  
А что непонятно?
 
> ли учесть в первом случае что дата состоит из dd-mm-yy или yyyy-mm-dd, а не dd-mm-yyyy
Ну и возьмите 2-4 символа, а не строго 2, 2 и 4.
 
> чтобы выдавались 5 символов после определенного слова
(слово.\{5\}), не?
 
> смог сделать, но очень на мой взгляд кривовато
Покажите, может и не очень криво.
 
> 2011-04-09 07:26:39,765 INFO  User id:061028; Action:Login; Info:Session id:*****BC0AFEC3B0BC5C9B317D214602***;
Ну да, не очень машиночитаемый формат. Но все-равно, имхо, не настолько, чтобы парсить всю строку регэкспом зараз.  
После слова «INFO» ведь табуляция, а не два пробела?

Всего записей: 9272 | Зарегистр. 12-05-2005 | Отправлено: 18:36 21-04-2011
gap5



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подскажите плз, sh скрипт для запуска tcpdump в цикле, который проверяет состояние интерфейса pdp_ip0, и когда тот поднимется, запускает tcpdump.
 
По идее можно использовать вывод ifconfig:
 
pdp_ip0: flags=8010<POINTOPOINT,MULTICAST> mtu 1450
 
и
 
pdp_ip0: flags=8010<UP,POINTOPOINT,MULTICAST> mtu 1450 соответственно.

Всего записей: 1033 | Зарегистр. 30-05-2006 | Отправлено: 13:45 27-05-2011 | Исправлено: gap5, 14:12 27-05-2011
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Shell scripts (sh, bash, zsh, tcsh)


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

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

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru