在我的bash脚本中,我有一个外部(从用户接收)字符串,我应该在sed模式中使用它.
REPLACE="<funny characters here>"
sed "s/KEYWORD/$REPLACE/g"
Run Code Online (Sandbox Code Playgroud)
如何逃避$REPLACE字符串,以便sed作为文字替代品安全地接受?
注意:这KEYWORD是一个没有匹配等的哑子串.它不是由用户提供的.
如何将包含斜杠的变量作为模式传递给sed?
例如,如果我有以下变量:
var="/Users/Documents/name/file"
Run Code Online (Sandbox Code Playgroud)
我想把它传递给sed:
sed "s/$var/replace/g" "$file"
Run Code Online (Sandbox Code Playgroud)
但是我得到错误.我该如何规避这个问题?
我是shell脚本的新手,我对如何使用sed或任何其他工具用字符串替换我的文本文件中的第一行感到困惑.以下是文本文件内容:
/home/snehil/Desktop/j1/movie.MOV "spome other text lines'
我想用just替换第一行(电影文件路径)movie.MOV(可能是shell脚本中的变量)
请指导我如何做到这一点.我sed在一些帖子中遇到过,我需要在sed这里使用吗?
我正在尝试使用sed来使用bash脚本更新配置文件.我在脚本运行正常的上面有一个类似的sed命令.我似乎无法弄清楚为什么这会破坏:
sed -i.bak \
-e s/"socketPath:'https://localhost:9091'"/"socketPath:'/socket'"/g \
$WEB_CONF
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
我有文件 .config 行:
projdir name_of_the_projdir
我需要用我自己的变量替换 name_of_the_projdir 。我尝试这样做
sed -i 's/^projdir .*$/projdir '$projdir'/' .le/.config
Run Code Online (Sandbox Code Playgroud)
但我收到错误
sed: -e expression #1, char 25: unknown option to `s'
Run Code Online (Sandbox Code Playgroud)
有人知道该怎么办吗?...我尝试用 " 替换第一个 ' 和最后一个,用 @ 替换第一个 ' 和最后一个 / 。但仍然不起作用
我在制作一个bash脚本时遇到了一些麻烦
这是我正在使用的代码.
cat /crawler/bc_daemon.php | sed "s/PORT2/${PORT}/ig" | sed 's/IP2/IPADDRESS/ig' | \
sed 's/USER2/USER/ig' | sed 's/PASS2/PASSWORD/ig' > bc_daemon.php
cat /crawler/bc_layout.php | sed "s/GITHUB/${REPO}/ig" | sed "s/COINNAME/${NAME}/ig" > bc_layout.php
Run Code Online (Sandbox Code Playgroud)
奇怪的是线条单独从脚本中工作.但是在剧本里面我得到了这个
sed: -e expression #1, char 17: unknown option to `s'
Run Code Online (Sandbox Code Playgroud)
当它需要打印变量时,我正在使用''它可以在字面上和""
在我看来,这应该是有效的.但我错过了我的错误
我有一点问题.
我尝试用文件中的$变量替换字符串(一行).
所以我使用命令:
sed -i -e "s/conf .*/conf = $PATH_CONF/g" generals.conf
Run Code Online (Sandbox Code Playgroud)
如果PATH_CONF不包含像"/"这样的特殊字符,那么它正在工作.
但是PATH_CONF包含一个路径(/ home/etc.)所以它有几个"/",然后我收到一个错误:
bad flag in substitute command: 'h'
Run Code Online (Sandbox Code Playgroud)
那么我该怎样做才能在我的$变量中加入特殊字符?
谢谢.
我正在尝试使用终端中的sed进行查找和替换.
在apache配置文件中,我正在尝试替换:
DocumentRoot /var/www
同
DocumentRoot /var/www/mysite.com/public_html
从命令行,不使用编辑器.我想用sed做这个,我尝试了各种迭代:
sudo sed -i 's/'DocumentRoot /var/www'/'DocumentRoot /var/www/mysite.com/public_html'/' /etc/apache2/sites-available/mysite.com
但是,这样做时我收到此错误:
sed: -e expression #1, char 14: unterminated s command
所以它在路径中的斜线上出错了.我该如何解决这个问题?
谢谢你的帮助
我正在尝试对 IPv4 地址脚本进行简单的替换。
这是我的代码。
#!/bin/sh
sed 's/[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}/192.100.100.100/g/'
Run Code Online (Sandbox Code Playgroud)
每次我打电话时都会发生什么:
example.sed example1 > example.output
Run Code Online (Sandbox Code Playgroud)
我得到:
sed: -e expression #1, char 75: unknown option to `s'
Run Code Online (Sandbox Code Playgroud)
其中第 75 个字符是 192.100.100.100 中的 1。
为什么?