相关疑难解决方法(0)

转义字符串以获取sed替换模式

在我的bash脚本中,我有一个外部(从用户接收)字符串,我应该在sed模式中使用它.

REPLACE="<funny characters here>"
sed "s/KEYWORD/$REPLACE/g"
Run Code Online (Sandbox Code Playgroud)

如何逃避$REPLACE字符串,以便sed作为文字替代品安全地接受?

注意:KEYWORD是一个没有匹配等的哑子串.它不是由用户提供的.

string escaping sed

296
推荐指数
6
解决办法
27万
查看次数

如何将包含斜杠的变量传递给sed

如何将包含斜杠的变量作为模式传递给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)

但是我得到错误.我该如何规避这个问题?

bash sed

88
推荐指数
6
解决办法
6万
查看次数

用字符串替换文本文件中的第一行

我是shell脚本的新手,我对如何使用sed或任何其他工具用字符串替换我的文本文件中的第一行感到困惑.以下是文本文件内容:

/home/snehil/Desktop/j1/movie.MOV
"spome other text lines'

我想用just替换第一行(电影文件路径)movie.MOV(可能是shell脚本中的变量)

请指导我如何做到这一点.我sed在一些帖子中遇到过,我需要在sed这里使用吗?

unix linux shell

55
推荐指数
2
解决办法
5万
查看次数

sed:-e expression#1,char 23:`s'的未知选项

我正在尝试使用sed来使用bash脚本更新配置文件.我在脚本运行正常的上面有一个类似的sed命令.我似乎无法弄清楚为什么这会破坏:

sed -i.bak \
    -e s/"socketPath:'https://localhost:9091'"/"socketPath:'/socket'"/g \
    $WEB_CONF
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

sed

6
推荐指数
2
解决办法
2万
查看次数

Sed 错误:sed:-e 表达式 #1,字符 25:“s”的未知选项

我有文件 .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)

有人知道该怎么办吗?...我尝试用 " 替换第一个 ' 和最后一个,用 @ 替换第一个 ' 和最后一个 / 。但仍然不起作用

sed

5
推荐指数
1
解决办法
6236
查看次数

在bash脚本中使用's'的未知选项

我在制作一个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)

当它需要打印变量时,我正在使用''它可以在字面上和""

在我看来,这应该是有效的.但我错过了我的错误

bash sed

5
推荐指数
3
解决办法
6992
查看次数

sed并用$变量替换字符串

我有一点问题.

我尝试用文件中的$变量替换字符串(一行).

所以我使用命令:

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)

那么我该怎样做才能在我的$变量中加入特殊字符?

谢谢.

bash sed

3
推荐指数
1
解决办法
4835
查看次数

忽略sed find和replace命令中的斜杠

我正在尝试使用终端中的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

所以它在路径中的斜线上出错了.我该如何解决这个问题?

谢谢你的帮助

bash sed

3
推荐指数
1
解决办法
4123
查看次数

sed 脚本中“s”的未知选项

我正在尝试对 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。

为什么?

unix shell scripting sed

0
推荐指数
1
解决办法
1036
查看次数

标签 统计

sed ×8

bash ×4

shell ×2

unix ×2

escaping ×1

linux ×1

scripting ×1

string ×1