Да,точно. Извиняюсь, я такими "математическими" конструкциями не пользуюсь, поэтому написал первое что пришло в голову, а пришло вот это
bash, несколько вопросов
Модераторы: /dev/random, Модераторы разделов
Re: bash, несколько вопросов
Да,точно. Извиняюсь, я такими "математическими" конструкциями не пользуюсь, поэтому написал первое что пришло в голову, а пришло вот это
Re: bash, несколько вопросов
А почему оно не рекомендуется, я и сам, к слову, не знаю(diesel @ Oct 22 2006, в 04:05) писал(а):Да,точно. Извиняюсь, я такими "математическими" конструкциями не пользуюсь, поэтому написал первое что пришло в голову, а пришло вот это
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Re: bash, несколько вопросов
в csh работает, но там свой синтаксис, и для циклов вроде 'for((i=10; i<20; i++)) do echo $i; done' есть, хотел кстати узнать о ее портабельности, вроде на sh работает.
Образование - это вовсе не то, чему человека учили, а то, чему он научился.
-----
Время, необходимое на компиляцию пакета обратно пропорционально его полезности и важности его наличия в системе.
-----
Время, необходимое на компиляцию пакета обратно пропорционально его полезности и важности его наличия в системе.
Re: bash, несколько вопросов
ety писал(а): ↑23.10.2006 21:26
в csh работает, но там свой синтаксис, и для циклов вроде 'for((i=10; i<20; i++)) do echo $i; done' есть, хотел кстати узнать о ее портабельности, вроде на sh работает.
а у вас sh не есть симлинк на что-нить? про фрю не знаю - в линуксе часто /bin/sh - симлинк на /bin/bash(Debian,SuSE)
Re: bash, несколько вопросов
diesel писал(а): ↑23.10.2006 21:31ety писал(а): ↑23.10.2006 21:26
в csh работает, но там свой синтаксис, и для циклов вроде 'for((i=10; i<20; i++)) do echo $i; done' есть, хотел кстати узнать о ее портабельности, вроде на sh работает.
а у вас sh не есть симлинк на что-нить? про фрю не знаю - в линуксе часто /bin/sh - симлинк на /bin/bash(Debian,SuSE)
агамсь, они зачем-то сделали симлинком. но в csh вроде можно извратится и за-aliasить while в классический for(i=10; i<20; i++)
Образование - это вовсе не то, чему человека учили, а то, чему он научился.
-----
Время, необходимое на компиляцию пакета обратно пропорционально его полезности и важности его наличия в системе.
-----
Время, необходимое на компиляцию пакета обратно пропорционально его полезности и важности его наличия в системе.
Re: bash, несколько вопросов
но, в принципе, тот же bash, в случае вызова с такого симлинка, должен вести себя аки чистый sh.(diesel @ Oct 23 2006, в 20:31) писал(а):в линуксе часто /bin/sh - симлинк на /bin/bash
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
при сбоях форума см.блог
Re: bash, несколько вопросов
Должен-то должен, но на практике я уже видел как минимум один момент, который bash понимает, а "чистый sh" понимать, по идее, не обязан, и тот же dash, к примеру, будучи вызван как /bin/sh таки да не понимает.
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Re: bash, несколько вопросов
подскажите, пожалйста, как закомментировать определенную строку в файле.
Что-то на ум ничего дельного не приходит...
спасибо.
Что-то на ум ничего дельного не приходит...
спасибо.
Re: bash, несколько вопросов
n2j2r
по номеру строки:
по номеру строки:
по подстроке:sed -i -e 'номер_строки s/^/#/' файл
sed -i -e 's/\(.*подстрока.*\)/#\1/' файл
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
при сбоях форума см.блог
Re: bash, несколько вопросов
sash-kan
большое спасибо.
большое спасибо.
Re: bash, несколько вопросов
подскажите пажалста как из строки вида:
получить строку вида:
Код: Выделить всё
/dev/sda1 on /mnt/usb type vfat (rw,nosuid,nodev,umask=000,codepage=866)
получить строку вида:
Код: Выделить всё
/dev/sda1
Gentoo 2007.0 / 2.6.19-r5 / Gnome
"Всё в этом мире относительно..." (с)
"Всё в этом мире относительно..." (с)
Re: bash, несколько вопросов
awk '{print $1}' /etc/fstab
echo '/dev/sda1 on /mnt/usb type vfat (rw,nosuid,nodev,umask=000,codepage=866)'|awk '{print $1}'
echo '/dev/sda1 on /mnt/usb type vfat (rw,nosuid,nodev,umask=000,codepage=866)'|cut -d' ' -f1
echo '/dev/sda1 on /mnt/usb type vfat (rw,nosuid,nodev,umask=000,codepage=866)'|awk '{print $1}'
echo '/dev/sda1 on /mnt/usb type vfat (rw,nosuid,nodev,umask=000,codepage=866)'|cut -d' ' -f1
Re: bash, несколько вопросов
а если просто sda1
ЗЫ не пинайте сильно
ЗЫ не пинайте сильно
Gentoo 2007.0 / 2.6.19-r5 / Gnome
"Всё в этом мире относительно..." (с)
"Всё в этом мире относительно..." (с)
Re: bash, несколько вопросов
гм по разному можно. зависит от того что вам надо
echo '/dev/sda1 on /mnt/usb type vfat (rw,nosuid,nodev,umask=000,codepage=866)'|awk '{print $1}'|awk -F/ '{print $3}'
echo '/dev/sda1 on /mnt/usb type vfat (rw,nosuid,nodev,umask=000,codepage=866)'|awk '{ sub("/dev/","",$1); print $1;}'
echo '/dev/sda1 on /mnt/usb type vfat (rw,nosuid,nodev,umask=000,codepage=866)'|awk '{print $1}'|awk -F/ '{print $3}'
echo '/dev/sda1 on /mnt/usb type vfat (rw,nosuid,nodev,umask=000,codepage=866)'|awk '{ sub("/dev/","",$1); print $1;}'
Re: bash, несколько вопросов
огромное спасибо, дальше думаю разберусь
Gentoo 2007.0 / 2.6.19-r5 / Gnome
"Всё в этом мире относительно..." (с)
"Всё в этом мире относительно..." (с)
Re: bash, несколько вопросов
а как правильно в bash скрипте правильно передать переменную awk?
в примере:
спасибо
в примере:
Код: Выделить всё
read val
cat $file | awk '/$val/{print}'
спасибо
Re: bash, несколько вопросов
Из man awk:
-v var=value assigns value to program variable var.
Re: bash, несколько вопросов
diesel
там так же сказано
и как мне в BEGIN все это сделать/это ж фактически до выполнения работает?
там так же сказано
Код: Выделить всё
Such variable values are available to the BEGIN block of an AWK program.
и как мне в BEGIN все это сделать/это ж фактически до выполнения работает?
Re: bash, несколько вопросов
n2j2r писал(а): ↑13.11.2006 13:42diesel
там так же сказано
Код: Выделить всё
Such variable values are available to the BEGIN block of an AWK program.
и как мне в BEGIN все это сделать/это ж фактически до выполнения работает?
Вообще это значит что эти переменные становятся доступными в BEGIN-блоке
как вариант:
awk "BEGIN{print \"$LANG\";}" напечатает значение системной переменной $LANG
можно даже вот так:
echo test|awk "BEGIN{a=\"$LANG\"};"'{print a}'
Re: bash, несколько вопросов
(diesel @ Nov 13 2006, в 16:00) писал(а):Вообще это значит что эти переменные становятся доступными в BEGIN-блоке
Код: Выделить всё
They are executed before any of the input is read.
так вот. мне то как раз не надо выводить переменную.Мне нужно использовать ее как шаблон для вывода совпавших строк из файла.
Вопрос то вобщем такой/ как затолкать жту переменную в pattern???
Re: bash, несколько вопросов
http://www.gnu.org/software/gawk/manual/ht...-Variables.html - вот тут пример есть того как затолкать переменную в паттерн ровно так же как и в BEGIN
BEGIN блок перед тем как начинается обработка текста который на входе. Переменные которые вы передаете в -v доступны уже в BEGIN-блоке(и во всем скрипте есс-но) - что тут непонятного?
BEGIN блок перед тем как начинается обработка текста который на входе. Переменные которые вы передаете в -v доступны уже в BEGIN-блоке(и во всем скрипте есс-но) - что тут непонятного?
Re: bash, несколько вопросов
в примере:
дело в том, что одинарные кавычки являются экранирующими. и внутри них, в частности, не происходит подстановка переменных. в данном случае можно их просто заменить на двойные.
универсальнее вынести нужные переменные из кавычек:
p.s. ага, внимательнее надо быть (:
в преведенной diesel-ем ссылке как раз, в частности, и про это самое.
переменная $val определена несколькимм строчками выше. я правильно понял?(n2j2r @ Nov 13 2006, в 12:26) писал(а):cat $file | awk '/$val/{print}'
дело в том, что одинарные кавычки являются экранирующими. и внутри них, в частности, не происходит подстановка переменных. в данном случае можно их просто заменить на двойные.
универсальнее вынести нужные переменные из кавычек:
универсальнее в том плане, что подстановка внешних для awk переменных не должна мешать употреблению его собственных внутренних переменных.awk '/'$val'/{print}'
p.s. ага, внимательнее надо быть (:
в преведенной diesel-ем ссылке как раз, в частности, и про это самое.
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
при сбоях форума см.блог
- Pinea Gofman
- Сообщения: 4
- ОС: MacOSX
- Контактная информация:
Re: bash, несколько вопросов
можно и мне вопросик про sed
почему вот эта строчка выполняется правильно
а такой вариант (вроде логичный и правильный) не работает
и как бы я не старался выполнить задачу одной командой sed
ничего не выходит
почему вот эта строчка выполняется правильно
Код: Выделить всё
echo "[tT][iI][fF]" | sed 's/\]//g' | sed 's/[\[A-Z]//g'
а такой вариант (вроде логичный и правильный) не работает
Код: Выделить всё
echo "[tT][iI][fF]" | sed 's/[\[A-Z]\]//g'
и как бы я не старался выполнить задачу одной командой sed
ничего не выходит
Не фэйка для а водки ради!!!
Re: bash, несколько вопросов
sed 's/[][A-Z]//g'
- Pinea Gofman
- Сообщения: 4
- ОС: MacOSX
- Контактная информация:
Re: bash, несколько вопросов
Не фэйка для а водки ради!!!
Re: bash, несколько вопросов
Суть вопроса:
в /etc/rc.conf есть строка:
MODULES=()
надо заменить её типа:
MODULES=(nvram i810 etc module)
но что-то не получается. Что я неправильно делаю?
в /etc/rc.conf есть строка:
MODULES=()
надо заменить её типа:
MODULES=(nvram i810 etc module)
но что-то не получается. Что я неправильно делаю?
Код: Выделить всё
MODULES="nvram i810 speedstep_centrino cpufreq_conservative ibm_acpi ppp-generic capability e100"
sed -i -e 's/\(^MODULES.*\)/MODULES=\('$MODULES'\)/' /etc/rc.conf
Win7 on X200s || Android 2.3 on Galaxy Tab
Блог
Блог
- Бодрый и Веселый
- Сообщения: 66
- ОС: What?
Re: bash, несколько вопросов
Можно так:
Код: Выделить всё
MODULES="a b c"; echo "MODULES=(e f g)" | sed -e "s/^MODULES=(.*)$/MODULES=(${MODULES})/"
Re: bash, несколько вопросов
А я, вот, не придумал как можно простенько проверить наличие установленного приложения. locate, по идее, не везде есть, а вот через test -x наличие нужного бинарника как-то не смог проверить. Возможно просто где-то ошибся в выражении. Проверить желательно весь PATH