Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Unix-системы [игнор отключен] [закрыт для гостей] / Shell + регулярные выражения. / 9 сообщений из 9, страница 1 из 1
03.06.2009, 14:09
    #36023587
Marauder
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Shell + регулярные выражения.
Не могу понять, как сделать следующее:
есть переменная $var1
надо в ней поменять одни символы на другие и записать в $var2

Нашёл вот это:
Код: plaintext
1.
2.
3.
4.
s/old/new/    Заменить первую old на new в текущей строке
s/old/new/p   Заменить первую old на new и печатать строку
s/old/new/g   Заменить каждую old на new в текущей строке
s/old/new/gp  Заменить каждую old на new и печатать строку
Вроде то что надо, только не могу понять как подать нужную переменную в качестве входящего параметра.
...
Рейтинг: 0 / 0
03.06.2009, 14:41
    #36023671
StasL
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Shell + регулярные выражения.
Marauder,
Не совсем понятно что вы хотите сделать. Приведите пример var1 и var2. Может чем и помогу.
...
Рейтинг: 0 / 0
03.06.2009, 14:43
    #36023674
Marauder
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Shell + регулярные выражения.
Да всё просто
$var1 =12345
надо '2' заменить на 'a'
т.в. в итоге $var2 = 1a345
...
Рейтинг: 0 / 0
03.06.2009, 14:44
    #36023678
Marauder
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Shell + регулярные выражения.
MarauderДа всё просто
$var1 =12345
надо '2' заменить на 'a'
т.в. в итоге $var2 = 1a345
лучше даже
$var1 = 12345
заменить '234' на 'аb'
в итоге $var2 = 1ab5
...
Рейтинг: 0 / 0
03.06.2009, 14:53
    #36023701
StasL
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Shell + регулярные выражения.
MarauderMarauderДа всё просто
$var1 =12345
надо '2' заменить на 'a'
т.в. в итоге $var2 = 1a345
лучше даже
$var1 = 12345
заменить '234' на 'аb'
в итоге $var2 = 1ab5

Код: plaintext
1.
2.
3.
4.
5.
#!/bin/sh                                                                                                                           
                                                                                                                                    
var1='12345'                                                                                                                        
echo $var1                                                                                                                          
var2=${var1/'234'/'ab'}                                                                                                             
echo $var2
...
Рейтинг: 0 / 0
03.06.2009, 15:01
    #36023714
Marauder
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Shell + регулярные выражения.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
в файле script следующее:

var1='12345'                                                                                                                        
echo $var1                                                                                                                          
var2=${var1/'234'/'ab'}
echo $var2

получаю на выходе
$ sh script
 12345 
script:  3 : Syntax error: Bad substitution
...
Рейтинг: 0 / 0
03.06.2009, 15:36
    #36023839
StasL
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Shell + регулярные выражения.
Marauder
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
в файле script следующее:

var1='12345'                                                                                                                        
echo $var1                                                                                                                          
var2=${var1/'234'/'ab'}
echo $var2

получаю на выходе
$ sh script
 12345 
script:  3 : Syntax error: Bad substitution


А вот так
Код: plaintext
1.
2.
3.
4.
var1='12345'                                                                                                                        
echo $var1                                                                                                                          
var2=`expr ${var1/'234'/'ab'}`
echo $var2
Да, у меня REHL5 и работают оба варианта
...
Рейтинг: 0 / 0
03.06.2009, 18:59
    #36024363
c guy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Shell + регулярные выражения.
зато сед не зависит от версии шелла:

Код: plaintext
1.
  var2=`echo $var1 | sed 's/old/new/g'`
...
Рейтинг: 0 / 0
04.06.2009, 08:12
    #36024794
Marauder
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Shell + регулярные выражения.
Спасибо за помощь.
До варианта
Код: plaintext
var2=`echo $var1 | sed 's/old/new/g'`
сам дошёл :)
...
Рейтинг: 0 / 0
Форумы / Unix-системы [игнор отключен] [закрыт для гостей] / Shell + регулярные выражения. / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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