Страница 1 из 1
sed
Добавлено: 2009-08-28 14:43:36
mayor
чото читал, получается что аргументом у sed переменная не может быть или может? строка типа:
не работает:
Код: Выделить всё
sed: 1: "{$stroka}p": unterminated substitute pattern
хочу загнать эту строку в цикл $stroka - номер строки в файле
Re: sed
Добавлено: 2009-08-28 15:13:03
terminus_
одинарная кавычка выключает парсинг переменных
Re: sed
Добавлено: 2009-08-28 15:24:55
mayor
terminus_ писал(а):
одинарная кавычка выключает парсинг переменных
не работает:
Код: Выделить всё
(15:23:52)</film> #stroka=4; s=`sed -n "$strokap" /film/list_new`; echo $s
(15:23:56)</film> #stroka=4; s=`sed -n "4p" /film/list_new`; echo $s
MSHOME
(15:24:20)</film> #
Re: sed
Добавлено: 2009-08-28 15:32:56
Гость
Код: Выделить всё
stroka=4; s=`sed -n "$stroka"p /film/list_new`; echo $s
Re: sed
Добавлено: 2009-08-28 15:36:38
mayor
Гость писал(а):Код: Выделить всё
stroka=4; s=`sed -n "$stroka"p /film/list_new`; echo $s
"$stroka"p - понял спс.

Re: sed
Добавлено: 2009-08-28 15:40:50
mayor
ну вот и весь мой первый майорский скрипт:
Код: Выделить всё
#! /bin/sh
set +
smbclient=/usr/local/bin/smbclient
sed=/usr/bin/sed
awk=/usr/bin/awk
echo "Набери текс сообщения"
read x
#вирезаем первое поле с именами компов
awk '{print $1}' /var/db/samba/browse.dat > /film/list_kompov
#вырезаем кавычки " вначале и в конце строки
sed 's/\"//g' /film/list_kompov > /film/list_new
nstrok=`wc -l </film/list_new`
stroka=1
while [ $stroka -le $nstrok ]
do
s=`sed -n "$stroka"p /film/list_new`
echo $s
echo $x | smbclient -M $s >/dev/null 2>&1
stroka=`expr $stroka + 1`
done
работает, посылает с консоли сообщение для компов рабочей групы
Re: sed
Добавлено: 2009-08-28 16:01:55
terminus_
mayor писал(а):ну вот и весь мой первый майорский скрипт:
Код: Выделить всё
#! /bin/sh
set +
smbclient=/usr/local/bin/smbclient
sed=/usr/bin/sed
awk=/usr/bin/awk
echo "Набери текс сообщения"
read x
#вирезаем первое поле с именами компов
awk '{print $1}' /var/db/samba/browse.dat > /film/list_kompov
#вырезаем кавычки " вначале и в конце строки
sed 's/\"//g' /film/list_kompov > /film/list_new
nstrok=`wc -l </film/list_new`
stroka=1
while [ $stroka -le $nstrok ]
do
s=`sed -n "$stroka"p /film/list_new`
echo $s
echo $x | smbclient -M $s >/dev/null 2>&1
stroka=`expr $stroka + 1`
done
работает, посылает с консоли сообщение для компов рабочей групы
Летз оптимайз тхиз!!!
Код: Выделить всё
#! /bin/sh
echo "Набери текс сообщения"
read x
#вирезаем первое поле с именами компов
#вырезаем кавычки " вначале и в конце строки
# zagonjaem vse v cikl
for s in `awk '{print $1}' /var/db/samba/browse.dat | sed 's/\"//g'`
do
echo $s
echo $x | smbclient -M $s >/dev/null 2>&1
done
Ы?

Re: sed
Добавлено: 2009-08-28 16:10:02
mayor
тип-топ работает!

, ну while мне первый на глаза попался..

Re: sed
Добавлено: 2009-08-28 16:16:35
terminus_
ну вот, зато теперь есть "опыт - сын ошибок трудных" (ц)
просто конструкция
делает все что надо без использования вывода во внешние файлы.
если у нас есть список из элементов разделенных переводом строки или одна строка из элементов разделенных пробелом, то for станет присваевать значение каждого из элементов переменной s поочередно - это то что надо.
конструкция
Код: Выделить всё
awk '{print $1}' /var/db/samba/browse.dat | sed 's/\"//g'
как раз и дает список!

Re: sed
Добавлено: 2009-09-12 9:07:07
mazzay
Код: Выделить всё
stroka=4; s=`sed -n "$stroka"p /film/list_new`; echo $s
А если нужно тоже, но в конвейере?
Код: Выделить всё
stroka="before"; echo "after" | sed i\"$stroka"
Не получается получить содержимое переменной
Re: sed
Добавлено: 2009-09-12 13:38:54
mazzay
Код: Выделить всё
stroka="before"; echo "after" | sed "s/^/$stroka/"
вот так заработало