powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Unix-системы [игнор отключен] [закрыт для гостей] / ksh: substitution and regexp
8 сообщений из 8, страница 1 из 1
ksh: substitution and regexp
    #34804243
Orlic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день.

Ksh поддерживает регулярные выражения. Может ли он сразу заменять найденные вхождения (как sed, perl).

И как вызывать sed в ksh-скрипте? А именно, заменить что-то на что-то в переменной в скрипте.
Код: plaintext
1.
2.
remotefile = "/etc/hosts.allow"
new = sed -e '/s/allow/deny/'   # хочу заменить allow на deny
Может, корявое решение, но пока ничего в голову не идет.
Спасибо.
...
Рейтинг: 0 / 0
ksh: substitution and regexp
    #34805211
Фотография Ося
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OrlicДобрый день.

Ksh поддерживает регулярные выражения. Может ли он сразу заменять найденные вхождения (как sed, perl).

И как вызывать sed в ksh-скрипте? А именно, заменить что-то на что-то в переменной в скрипте.
Код: plaintext
1.
2.
remotefile = "/etc/hosts.allow"
new = sed -e '/s/allow/deny/'   # хочу заменить allow на deny
Может, корявое решение, но пока ничего в голову не идет.
Спасибо.

1. что хотите получить в результате?
2. неправильно

правильно 1 вариант:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
REMOTEFILE="/etc/hosts.allow"
NEWTEMPFILE="/tmp/hosts.allow.$$"
ERROR="/tmp/error.$$"

sed 's/allow/deny/g' $REMOTEFILE  1 > $NEWTEMPFILE  2 >$ERROR

# check exit code 


правильно 2 вариант:
Код: plaintext
1.
2.
3.
4.
5.
REMOTEFILE="/etc/hosts.allow"
ERROR="/tmp/error.$$"
sed -i 's/allow/deny/g' $REMOTEFILE  2 >$ERROR
# check exit code 

...
Рейтинг: 0 / 0
ksh: substitution and regexp
    #34805373
Orlic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо, попробую Ваши варианты.
Переменная содержит некоторый шаблон <HOSTNAME>, в результате хочу получить замещение этого шаблона реальным hostname (в цикле, hostname читается из большого /etc/hosts файла) и в скрипте использовать уже реальное значение переменной.
В перле примерно так делается, по моему:
Код: plaintext
1.
$remotefile =~ /patter/new_value/
...
Рейтинг: 0 / 0
ksh: substitution and regexp
    #34805508
Фотография Ося
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OrlicСпасибо, попробую Ваши варианты.
Переменная содержит некоторый шаблон <HOSTNAME>, в результате хочу получить замещение этого шаблона реальным hostname (в цикле, hostname читается из большого /etc/hosts файла) и в скрипте использовать уже реальное значение переменной.
В перле примерно так делается, по моему:
Код: plaintext
1.
$remotefile =~ /patter/new_value/



Код: plaintext
1.
2.
3.
4.
for q in `grep -v ^# /etc/hosts` 
do
       #whatever
done
...
Рейтинг: 0 / 0
ksh: substitution and regexp
    #34805548
Orlic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Это понятно. Только вместо #whatever соответственно алгоритм следующий - заменить в переменной $remotefile шаблон <HOSTNAME> на то, что прочитано в переменную $q. Ваши же примеры перенаправляют вывод в файл и читают из файла, заданного в переменных, а нужно обрабатывать именно значение переменной!

Чтото типа
Код: plaintext
1.
echo "$remotefile" | sed "s/<HOSTNAME>/${q}/g"
Как то результат этой операции присвоить обратно переменной remotefile
...
Рейтинг: 0 / 0
ksh: substitution and regexp
    #34805562
Фотография Ося
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OrlicЭто понятно. Только вместо #whatever соответственно алгоритм следующий - заменить в переменной $remotefile шаблон <HOSTNAME> на то, что прочитано в переменную $q. Ваши же примеры перенаправляют вывод в файл и читают из файла, заданного в переменных, а нужно обрабатывать именно значение переменной!

Чтото типа
Код: plaintext
1.
echo "$remotefile" | sed "s/<HOSTNAME>/${q}/g"
Как то результат этой операции присвоить обратно переменной remotefile

давайте вы 2+2 будете сами делать :))
...
Рейтинг: 0 / 0
ksh: substitution and regexp
    #34805570
Orlic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Это понятно. Только вместо #whatever соответственно алгоритм следующий - заменить в переменной $remotefile шаблон <HOSTNAME> на то, что прочитано в переменную $q. Ваши же примеры перенаправляют вывод в файл и читают из файла, заданного в переменных, а нужно обрабатывать именно значение переменной!

Чтото типа
Код: plaintext
1.
2.
var=$(echo "$remotefile" | sed "s/<HOSTNAME>/${q}/g")
print "New value is: $var"
...
Рейтинг: 0 / 0
ksh: substitution and regexp
    #34805578
Orlic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Упс, флуд небольшой :)

Вопрос был именно в том, как 2+2 сделать :) Спасибо, все получилось.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Unix-системы [игнор отключен] [закрыт для гостей] / ksh: substitution and regexp
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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