相关疑难解决方法(0)

使用变量替换shell脚本中的字符串

我使用下面的代码替换shell脚本中的字符串.

echo $LINE | sed -e 's/12345678/"$replace"/g'
Run Code Online (Sandbox Code Playgroud)

但它正在被替换$replace而不是该变量的值.

谁有人说出了什么问题?

unix shell sed

81
推荐指数
7
解决办法
38万
查看次数

如何在sed中转义双引号和单引号?

从我所能找到的,当你使用单引号时,内部的所有内容都被视为字面意思.我想要替换它.但我也希望找到一个包含单引号或双引号的字符串.

例如,

sed -i 's/"http://www.fubar.com"/URL_FUBAR/g'
Run Code Online (Sandbox Code Playgroud)

我想用URL_FUBAR替换"http://www.fubar.com".如何识别我的//或我的双引号?

谢谢你的帮助!

编辑:我可以用s/\"http\:\/\/www\.fubar\.\com\"/URL_FUBAR/g吗?

\实际上是否在单引号内逃脱了字符?

bash command-line sed

63
推荐指数
4
解决办法
12万
查看次数

用bash变量替换sed

尝试使用带有该行的bash脚本中的sed更改文本文件中的值,

sed 's/draw($prev_number;n_)/draw($number;n_)/g' file.txt > tmp
Run Code Online (Sandbox Code Playgroud)

这将是一个for循环.不知道为什么它不起作用.有什么建议?

bash sed substitution

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

如何为sed替换命令使用不同的分隔符?

我正在编写一个shell脚本来创建一些配置文件.我必须替换文件中的一些模式,并且应该用路径替换一个模式.

所以我的问题是:有没有办法用路径替换我的占位符webpath而不在斜杠前面设置反斜杠?

也许有另一种工具可以做到这一点?

sed

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

sed脚本中的Shell变量

sed命令在命令提示符下按预期工作,但在shell脚本中不起作用.

new_db_name=`echo "$new_db_name" | sed 's/$replace_string/$replace_with/'`
Run Code Online (Sandbox Code Playgroud)

为什么会这样,我该如何解决?

sed

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

逃脱美元符号为sed的regexp

我会在实际询问之前介绍我的问题 - 随意跳过本节!

关于我的设置的一些背景信息

要在软件系统中手动更新文件,我正在创建一个bash脚本,使用diff删除新版本中不存在的所有文件:

for i in $(diff -r old new 2>/dev/null | grep "Only in old" | cut -d "/" -f 3- | sed "s/: /\//g"); do echo "rm -f $i" >> REMOVEOLDFILES.sh; done
Run Code Online (Sandbox Code Playgroud)

这很好用.但是,显然我的文件通常在文件名中有一个美元符号($),这是由于GWT框架的一些排列.以下是上面创建的bash脚本中的一个示例行:

rm -f var/lib/tomcat7/webapps/ROOT/WEB-INF/classes/ExampleFile$3$1$1$1$2$1$1.class
Run Code Online (Sandbox Code Playgroud)

执行此脚本不会删除所需文件,因为bash将这些文件作为参数变量读取.因此,我必须用"\ $"来逃避美元符号.

我的实际问题

我现在想在上述管道中添加一个sed-Command,替换这个美元符号.事实上,sed还将美元符号作为正则表达式的特殊字符读取,因此显然我也必须将其转义.但不知怎的,这不起作用,我在google搜索后找不到解释.

以下是我尝试过的一些变化:

echo "Bla$bla" | sed "s/\$/2/g"        # Output: Bla2
echo "Bla$bla" | sed 's/$$/2/g'        # Output: Bla
echo "Bla$bla" | sed 's/\\$/2/g'       # Output: Bla
echo "Bla$bla" | sed 's/@"\$"/2/g'     # Output: Bla
echo "Bla$bla" | …
Run Code Online (Sandbox Code Playgroud)

regex bash shell sed

8
推荐指数
2
解决办法
7654
查看次数

sed 命令不更新文本文件

我想问一下,因为我在 unix 脚本中使用 sed 命令时遇到问题。

#!/bin/sh
cnt=2
sed '1 c\
$cnt' test.txt
Run Code Online (Sandbox Code Playgroud)

我想用变量 cnt 的值(即 2)替换文本文件 test.txt 的第一行。如何在上述 sed 命令中传递该变量?sed 命令将 $cnt 视为字符串。

regex unix shell sed hp-ux

2
推荐指数
1
解决办法
5740
查看次数

标签 统计

sed ×7

bash ×3

shell ×3

regex ×2

unix ×2

command-line ×1

hp-ux ×1

substitution ×1