Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Unix-системы [игнор отключен] [закрыт для гостей] / Изменить строки в файле без участия пользователя / 11 сообщений из 11, страница 1 из 1
03.03.2010, 18:14
    #36500690
skelet
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Изменить строки в файле без участия пользователя
есть некий /etc/fstab -)
хотелось бы произвести следующую операцию:

узнать смонтировано ли там некоторое устройство , напр /dev/xxx если нет то добавить строку, а если есть - изменить некоторые параметры, в частности четвёртое поле fs_mntops с опциями монтирования (там где обычно defaults) . Желательно не создавать новый изменённый, а править текущий.

Это возможно в баше или лучше сразу писать на сях и не заморачиваться?
...
Рейтинг: 0 / 0
03.03.2010, 19:54
    #36500939
kvasandrew
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Изменить строки в файле без участия пользователя
Да возможно в баше. с пересозданием самый простой и очевидный способ.
...
Рейтинг: 0 / 0
03.03.2010, 19:57
    #36500942
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Изменить строки в файле без участия пользователя
Проверить наличие строки это grep. Изменить строку это sed или awk.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
04.03.2010, 12:15
    #36502011
skelet
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Изменить строки в файле без участия пользователя
Dimitry Sibiryakov
Проверить наличие строки это grep. Изменить строку это sed или awk.

ну вы прям секрет открыли, а по подробней? особенно в плане как заставить sed писать в текущий файлик... ?
...
Рейтинг: 0 / 0
04.03.2010, 12:23
    #36502037
avb1003
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Изменить строки в файле без участия пользователя
skelet...
ну вы прям секрет открыли, а по подробней? особенно в плане как заставить sed писать в текущий файлик... ?А в чем "кайф", чтобы прямо в текущий? Чем плохо создать исправленную копию с последующим переименованием?
...
Рейтинг: 0 / 0
04.03.2010, 16:39
    #36503075
skelet
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Изменить строки в файле без участия пользователя
avb1003skelet...
ну вы прям секрет открыли, а по подробней? особенно в плане как заставить sed писать в текущий файлик... ?А в чем "кайф", чтобы прямо в текущий? Чем плохо создать исправленную копию с последующим переименованием?
да приходится уже, с помощью awk , только вот осталось понять, как в awk передать переменную из баша.

export SIZE не прокатывает...

если кто знает - подскажите, только в этом осталась загвоздка


Код: plaintext
1.
2.
3.
4.
res=$(awk '{ t="SIZE"; if (($2=="/dev/shm") && ($4=="defaults"))
                 { print ( $1,"\t\t",$2,"\t",$3,"\t",t,"\t",$5,"\t",$6 )  }
             else
                 { print }   }' $filename)
...
Рейтинг: 0 / 0
04.03.2010, 19:37
    #36503667
avb1003
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Изменить строки в файле без участия пользователя
skelet... только вот осталось понять, как в awk передать переменную из баша.

export SIZE не прокатывает...
"export SIZE" - это чтобы передать . Передать в любой процесс, запускаемый bash.skelet...
если кто знает - подскажите, только в этом осталась загвоздка
Проблема может быть только в том, как "получить" . Для GNU Awk 3.1.6:
man gawk...
ENVIRON An array containing the values of the current environment.
The array is indexed by the environment variables, each
element being the value of that variable (e.g., ENVI-
RON["HOME"] might be /home/arnold). Changing this array
does not affect the environment seen by programs which gawk
spawns via redirection or the system() function.
...А еще лучше, IMHO, перейти на perl. См. man perlrun, ключи -e,-i, -n, -p.
...
Рейтинг: 0 / 0
05.03.2010, 04:51
    #36504075
Изменить строки в файле без участия пользователя
skelet
ну вы прям секрет открыли, а по подробней? особенно в плане как заставить sed писать в текущий файлик... ?
замена в файле при помощи sed, например:
Код: plaintext
$ sed -i 's/ЧТО/ЧЕМ/g' file.txt
g - опционально (заменить все вхождения), если не указывать - заменит только первое вхождение
...
Рейтинг: 0 / 0
05.03.2010, 11:52
    #36504628
avb1003
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Изменить строки в файле без участия пользователя
мимо крокодил,
В маn-е по sed(в отличие от man-а по perl) это явно не сказано, но эксперименты показывают, что
ключ -i приводит к созданию нового файла, а не редактированию уже существующего.
...
Рейтинг: 0 / 0
05.03.2010, 13:11
    #36504852
Подумалось...
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Изменить строки в файле без участия пользователя
RLY?

man sed
-i[SUFFIX], --in-place[=SUFFIX]

edit files in place (makes backup if extension supplied)
...
Рейтинг: 0 / 0
05.03.2010, 21:18
    #36505776
avb1003
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Изменить строки в файле без участия пользователя
Подумалось...,
Я же так и сказал:"...это явно не сказано, но эксперименты показывают, что ...". Поэкспериментируйте!
Проверьте, например, с помощью команды ls -li, что происходит с inode файла после редактирования "in-place" даже при сохранении размера. У меня он меняется при использовании sed, vim, но, что меня удивило, сохраняется после elvis-2.2.0.
...
Рейтинг: 0 / 0
Форумы / Unix-системы [игнор отключен] [закрыт для гостей] / Изменить строки в файле без участия пользователя / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]