Страница 1 из 1

sed: переменная в качестве шаблона поиска

Добавлено: 2008-03-12 14:13:41
proDd
не получается использовать переменную в качестве шаблона поиска для sed, вообще возможно ли это? может я гдето ошибся в синтаксисе? знак доллара в шаблоне для sed означает последнюю строку как бы это увязать с попыткой вызова переменной?

например скрипт

Код: Выделить всё

#!/bin/sh
a="prodd"
sed '/$a/d' test.f
по идеи из файла test.f следующего содержания

Код: Выделить всё

ivan
prodd
mike
должен выдавать

Код: Выделить всё

ivan
mike
а он собственно ничего не выдает(

Re: sed: переменная в качестве шаблона поиска

Добавлено: 2008-03-12 16:13:07
idle
Кавычки замените.

Код: Выделить всё

#!/bin/sh
a="prodd"
sed "/$a/d" test.f

Re: sed: переменная в качестве шаблона поиска

Добавлено: 2008-03-12 17:50:25
proDd
спасибо помогло
я вообще-то забыл что одинарные кавычки заставляют интрепритатор не разбирать строку, а читать как есть(

Код: Выделить всё

#!/bin/sh
a="prodd"
sed /$a/d test.f
мда без ковычек тоже работает, чтото сразу я до этого не додумался...(

Re: sed: переменная в качестве шаблона поиска

Добавлено: 2008-03-12 20:34:28
zg
не стоит забывать, что шелл сначала расширяет переменные, а только потом выполняет команду, поэтому $a и "$a" имеет разный смысл

Re: sed: переменная в качестве шаблона поиска

Добавлено: 2008-03-13 0:59:11
Гость
proDd писал(а):мда без ковычек тоже работает, чтото сразу я до этого не додумался...(
если в переменной хранятся спецсимволы (например, пробел), то у тя будет ошибка, как и будет ошибка, если в переменной есть символ /, к-ый является разделителем regexp'а, заменителя и команды в sed(1)

Re: sed: переменная в качестве шаблона поиска

Добавлено: 2008-03-13 1:03:01
Гость
Гость писал(а):спецсимволы
специальные для sh(1) и для sed(1). Это пространство доступных символов еще больше может сократиться, если скрипт генерирует другой скрипт на другом ЯП. ,)

Re: sed: переменная в качестве шаблона поиска

Добавлено: 2011-03-20 4:00:31
Гость
Помогите и мне если это возможно.

есть две переменных a и b. a=old_md_sum b=new_md_sum.

переменная имеет вид: (echo "$a")

d50c7d03ae6f277762a0fee37639c2a2
6d7b29590b83666f56d2cac27c06c18b
2081f795b0f92490c1c3f00b964e36de
896e801773bc584f860baef19f1b112d
0fa94830d54c83462e8f3c12fcb7c67f
etc

Конструкция sed "s/$a/$b/q" file_md5 не работает. Я хотел таким образом заменить все суммы в file_md5.
Конструкция работает если в переменной одно значение суммы. Я плохо понимаю как это работает.

Re: sed: переменная в качестве шаблона поиска

Добавлено: 2011-03-20 13:52:35
kpp
Что в переменной b?
Что в файле file_md5 ?

sed: переменная в качестве шаблона поиска

Добавлено: 2015-02-20 15:18:17
Fantom[NB]

Код: Выделить всё

sed "s/$a/$b/g" file_md5