LINUX.ORG.RU

sed в sh-скриптах


0

0

Столкнулся со следующими трудностями. Пишу sh-скрипт следующего содержания:

#!/bin/sh

CMD="sed -e 's/test test/Test Test/'" $(echo "test test" | $CMD)

и получаю ошибку: sed: -e выражение #1, символ 1: неизвестная команда: `''. Ругается на апострофы. Если апострофы убрать, то ругается на пробелы: sed: -e выражение #1, символ 6: незавершенная команда `s'

Как можно экранировать пробелы?

anonymous
Ответ на: комментарий от Anoxemian

> /\ /

Это если просто sed пускать работает, а если в моём случае написать CMD="sed -e s/test\ test/Test\ Test/", то всё равно получаю ругань на пробел: sed: -e выражение #1, символ 7: незавершенная команда `s'

:(

anonymous
()
Ответ на: комментарий от anonymous

Я сделал CMD="eval sed -e s/test\ test/Test\ Test/" , хотя сдаётся мне, должно быть более корректное решение..

Laz ★★★★★
()

Используй функции

SED() {
  sed 's/test test/Test Test/'
}


echo "test test"     | SED
echo "1 test test 1" | SED
echo "2 test test 2" | SED

sdio ★★★★★
()
Ответ на: комментарий от sdio

> Используй функции

Это конечно тоже хорошо, но у меня команды считываются из файла в переменную, а затем исполняются. Вот и хочется сделать так, чтобы без лишнего разора команд работало.

anonymous
()

>CMD="sed -e 's/test test/Test Test/'"
>$(echo "test test" | $CMD)
замени на:
CMD="sed -e 's/test test/Test Test/'"
eval "echo 'test test' | $CMD"

sdio ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.