LINUX.ORG.RU

Sed: как взять слово из аргумента к bash-скрипту и поменять/вставить его в текст

 


0

1

хочу запустить скрипт, например: replace.sh text2 в результате нужно чтобы слово «text1» поменялся в config.php на аргумент, в данном случает на «text2»: cat config.php | sed 's/text1/ARGUMENT/g'

Перепробовал все доступные сне методы. Как это можно сделать?

cat config.php | sed «s/text1/ARGUMENT/g»

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

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

Или так, если нужно, чтобы прямо в config.php поменялось:

#!/bin/sh

sed -i 's/text1/'$1'/g' config.php

x-signal ★★
()
Ответ на: комментарий от thriller

=)

брать фразу в кавычки или экранировать пробелы.

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

Это не будет работать, если $1 содержит пробелы или амперсанд, например.
Это не будет работать в принципе, потому как выхлоп sed улетает в stdout.

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

Ещё как заэкранирует.

dan@dan-desktop:~$ cat test.sh 
#!/bin/sh

echo $1
dan@dan-desktop:~$ ./test.sh 'ab    c&123&'
ab c&123&

Ну а пробелы расползутся по разным аргументам, что уж тут поделать.

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

Что значит «проблемы седа»? Реши задачу для ОПа без седа в таком случае.

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