Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Shell scripts (sh, bash, zsh, tcsh)

Автор: Maximus777
Дата сообщения: 07.05.2010 06:47
urodliv
вы невнимательно прочли моё предыдущее сообщение. Сплит мне не подходит не по причине малой функциональности, а в связи с ограниченным свободным местом. Он просто не сможет сложить порезанные части, места не хватит. Поэтому да, править skip и резать. Кстати написать вместо 1024, 2048 совсем не сложно. А поделить на части можно чем угодно, задача состояла в другом - как при делении выхватить только одну часть. Сплит умеет такие фокусы делать? По-моему индейская национальная изба.

С dd уже всё проверил, работает как часы. Осталось сделать небольшой скрипт, который будет создавать файл с контрольной суммой и можно всё это хозяйство подсовывать к примеру Тотал коммандеру. Собирает как с добрым утром. Сам пока Krusader'ом собирал, всё гуд. Но надо всё же в консоли научиться это делать. Вот тут может и сплит пригодится, а может и dd это также сделает.
Автор: SAV83
Дата сообщения: 17.05.2010 08:16
Если спрашивали, извините, не нашел.

в bash есть возможность сложения в командной строке:

Код: $ $((1+1))
-bash: 2: команда не найдена
Автор: urodliv
Дата сообщения: 17.05.2010 18:30
SAV83
expr 1 + 1
Автор: SAV83
Дата сообщения: 18.05.2010 08:56
urodliv
Спасибо!
Автор: SPV_Ed
Дата сообщения: 25.06.2010 21:59
Помогите. Есть 3 текстовых файла:

text1
text2
text3

2
3
4

7
8
9

Как из них можно получить такое:

text1;2;9
text2;3;11
text3;4;13

3ий столбец - сумма строк из 2 и 3го файлов.

Можно ли такое можно сделать в bash и сопутствующих утилитах? Подскажите пожалуйста.

Заранее спасибо за помощь.
Автор: stsoldier
Дата сообщения: 16.09.2010 18:48
Помогите пожалуйста сделать рабочим скрипт. Нужно много файлов переместить из одной папки в подпапку наfreebsd.


Код: #!/bin/bash
mv /folder/2010/033871556823738.png /folder/2010/tech/033871556823738.png
mv /folder/2010/567868250242263.gif /folder/2010/tech/567868250242263.gif
mv /folder/2010/833160657172882.png /folder/2010/tech/833160657172882.png
Автор: Allex_Van_Fogen
Дата сообщения: 30.09.2010 09:25
Привет,

Реально ли сделать такое на sh:
Имеем вывод командочки arp -i eth1:

Код:
Address HWtype HWaddress Flags Mask Iface
192.168.1.1 ether 00:10:C6:9F:2C:11 C eth1
192.168.1.2 ether 00:10:C6:9F:2C:22 C eth1
Автор: Allex_Van_Fogen
Дата сообщения: 02.10.2010 10:43
Оказалось всё примитивно:

Код:
#!/bin/sh
# Блокирует хост, если его ip-адрес назначен вручную

ARPCACHE=`arp -i eth1 | awk '{ print $1 }' | grep -v ^Address`

for TEST_IP in $ARPCACHE;
do
if [ `grep -c $TEST_IP /var/lib/misc/dnsmasq.leases` == 0 ]; then
     /sbin/arp -s $TEST_IP 00:00:00:00:00:00;
fi
done
Автор: labrador13
Дата сообщения: 06.10.2010 16:41
Доброго времени суток!

Имеется сценарий вида:

Код: #!/bin/sh -
STR="Hello, $i"
value='test'
i=$value
echo "Now \$i is $i"
echo $STR
Автор: vjunk
Дата сообщения: 07.10.2010 18:55
labrador13

Код: #!/bin/sh -
STR='Hello, $i'
value='test'
i=$value
echo "Now \$i is $i"
eval "echo $STR"
Автор: Jugador
Дата сообщения: 09.11.2010 15:47
Надо выцепить мак адресс вай фай точки, к которой подключен.
пробую...

Код:
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
Автор: vjunk
Дата сообщения: 09.11.2010 22:01
А так:

Код: iwconfig 2>/dev/null | grep Point | awk '{print $6}'
Автор: iv13581
Дата сообщения: 21.12.2010 08:12
Обясните смысл:
awk '!x[$0]++' file.txt
Эта команда удаляет повторяьщиеся строки из файла, но как?!
Автор: iv13581
Дата сообщения: 23.12.2010 19:35

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

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

Во как!

Т.е. в результате печатается файл в оригинальном порядке (в отличии от ..|sort|uniq) без повторов!
Автор: Nekt
Дата сообщения: 24.12.2010 20:16

Код:
#!/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 "$*"
Автор: vjunk
Дата сообщения: 26.12.2010 22:28
Nekt
Концы строк в нормальный (юниксовый) вид приведи.
Автор: Nekt
Дата сообщения: 27.12.2010 15:36
Разобрался, спасибо большое вам!
Автор: Weinaum
Дата сообщения: 05.01.2011 22:38
есть два сайта-зеркала,скажем, mysite.ru и mysite.com, синроню через rsync, но вот есть одна засада.
Есть одна папка, включает в себя подпапки, исключать из синхронизации нельзя, так как изменения происходят довольно существенные.
Итак, в этих подпапках внутри основной папки находятся по одному или несколько xml-файлов, которые изменяются, но кроме всего прочего, они содержат несколько строк - путей соответственно с полными урлами. Таким образом, после синхронизации соотвественно косяки из за этих урлов.
Таким образом, нужен скрипт, который бы искал в исходной папке рекурсивно по всем подпакам строки с однми урлом и заменял эти урлы на другие...
спасибо заранее
Автор: Weinaum
Дата сообщения: 07.01.2011 11:27
Оказывается, все вроде просто, find и sed все делают. Осталось только до ума довести.
Например, команда вида

Код: find "корневая_папка_для_поиска" -name "*.xml" -print0 | xargs -0 sed -i -e "s/текст_для_поиска/заменяем_на/g"
Автор: danb2
Дата сообщения: 20.01.2011 10:02
Подскажите плиз как в команду которая имеет два входных параметра - файла, подставить вместо файлов вывод других команд?

Например:


Код: paste [FILE1] [FILE2]
Автор: tovsam93
Дата сообщения: 07.04.2011 21:11
добрый вечер, прошу помощи, нужно написать скрипт на bash, после запуска должна прописоваться адрес каталога, а так же размер файла в блоках и скрипт должен скказать есть ли файлы размер которых меньше заданного числа блоков, нужна помощь
я уже писал в одной ветке это сообщение извините, просто это тема слегка живее той)
Автор: ASE_DAG
Дата сообщения: 07.04.2011 21:29
tovsam93
> я уже писал в одной ветке это сообщение
В какой? Вы его там удалили или указали, что продублировали еще и здесь?

> это тема слегка живее той
Вот еще более живая тема: UNIX Shell: sh, bash, zsh; Coreutils и ко.; sed, awk, perl;

А вопрос-то ваш не очень понятен. Вам надо найти в заданной директории файлы меньше заданного размера? Если так, то, например:

$ find /tmp -maxdepth 1 -size -100

P.S. Кстати, что вы называете блоком: полукилобайт (как выше) или переменное число?
Автор: tovsam93
Дата сообщения: 09.04.2011 06:09
ASE_DAG
блок переменное число

и вопрос, как удалять сообщения?
Автор: ASE_DAG
Дата сообщения: 09.04.2011 14:30
tovsam93
> как удалять сообщения?
Отредактировать, заменив содержимое на «del». ;)


По вопросу — все, вы разобрались?
Автор: ydaf
Дата сообщения: 21.04.2011 11:36
Нужна подсказка по sed либо awk.
Есть строка вида
"тарам пам пам 1819 21-04-2011 12:32:30 парам там там пользователь 564856 там"
"пам парам 6 21.04.2011 пользователь 564856 там"

Как из этих строк вытянуть подстроки
21-04-2011
21.04.2011
564856.

Автор: ASE_DAG
Дата сообщения: 21.04.2011 12:32
ydaf
$ sed -n 's/^.* \([0-9]\{2\}[.-][0-9]\{2\}[.-][0-9]\{4\}\) .* \([0-9]\+\) .*$/\1\n\2/p' pamparam

И на будущее: формулируйте задачу на реальном примере.
Автор: ydaf
Дата сообщения: 21.04.2011 16:35
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'а
Автор: ASE_DAG
Дата сообщения: 21.04.2011 17:36
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» ведь табуляция, а не два пробела?
Автор: gap5
Дата сообщения: 27.05.2011 12:45
Подскажите плз, sh скрипт для запуска tcpdump в цикле, который проверяет состояние интерфейса pdp_ip0, и когда тот поднимется, запускает tcpdump.

По идее можно использовать вывод ifconfig:

pdp_ip0: flags=8010<POINTOPOINT,MULTICAST> mtu 1450

и

pdp_ip0: flags=8010<UP,POINTOPOINT,MULTICAST> mtu 1450 соответственно.
Автор: ASE_DAG
Дата сообщения: 27.05.2011 14:05
gap5
Посты не дублируйте. Не первый же вы вроде год на форуме.

Страницы: 123456

Предыдущая тема: Сжатие БД формата Access средствами VC++


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.