相关疑难解决方法(0)

Bash中单引号和双引号之间的区别

在Bash中,单引号('')和双引号("")之间有什么区别?

syntax bash shell quotes

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

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

我是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命令中使用变量?

我有abc.sh:

exec $ROOT/Subsystem/xyz.sh
Run Code Online (Sandbox Code Playgroud)

在Unix机器上,如果我打印,echo $HOME那么我得到/HOME/COM/FILE.

我想更换$ROOT$HOME使用sed的.

预期产出:

exec /HOME/COM/FILE/Subsystem/xyz.sh
Run Code Online (Sandbox Code Playgroud)

我试过了,但我没有得到预期的输出:

sed  's/$ROOT/"${HOME}"/g' abc.sh > abc.sh.1
Run Code Online (Sandbox Code Playgroud)

加成:

如果我有 abc.sh

exec $ROOT/Subsystem/xyz.sh $ROOT/ystem/xyz1.sh
Run Code Online (Sandbox Code Playgroud)

然后用

sed "s|\$INSTALLROOT/|${INSTALLROOT}|" abc.sh
Run Code Online (Sandbox Code Playgroud)

它只是首先替换$ROOT,即输出即将到来

exec /HOME/COM/FILE/Subsystem/xyz.sh $ROOT/ystem/xyz1.sh
Run Code Online (Sandbox Code Playgroud)

unix sed

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

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

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

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

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

sed

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

使用变量时,sed替换不起作用

尝试用sed替换字符串时发生了一些奇怪的事情.这有效:

find /home/loni/config -type f -exec sed -i 's/some_pattern/replacement/g' {} \;
Run Code Online (Sandbox Code Playgroud)

所以当我手动输入字符串时它可以工作.但在下面的情况下,不会发生更换:

find /home/loni/config -type f -exec sed -i 's/${PATTERN}/${REPLACEMENT}/g' {} \;
Run Code Online (Sandbox Code Playgroud)

当我回显这两个变量PATTERN和REPLACEMENT时,它们具有正确的值.

我正在尝试用我的config目录中的所有文件中的替换字符串替换所有模式字符串的出现.

linux bash shell sed

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

在sed替换中使用$ HOSTNAME

我想在调用中使用我的Centos VM的$ HOSTNAME,sed如下所示:

sed -i 's/Apache 2 Test Page/$HOSTNAME Test Page/g' /var/www/error/noindex.html
Run Code Online (Sandbox Code Playgroud)

但是,这只是替换Apache 2 Test Page$HOSTNAME Test Page......我知道我可以做手工,但我有一个很好的理由为希望做这种方式.


FWIW,我实际上是在一个bash脚本中执行此操作,该脚本从Vagrantfile调用,后者又提供多个VM(每个都安装了Apache2),以便我可以测试HAProxy的负载平衡功能.所以我只想要一种简单的方法来区分我的3个Web服务器,而且我认为修改默认的Apache页面是最简单的方法.

unix linux bash sed hostname

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

在文本文件中插入变量

我正在尝试使用 sed -i 命令在文本文件的第一行中插入一个字符串变量。此命令有效:sed -i '1st header' file.txt 但是当我传递一个变量时,这不起作用。例子 :

var=$(cat <<-END
    This is line one.
    This is line two.
    This is line three.
END
)

sed -i '1i $var' file.txt # doesn't work
sed -i ’1i $var’ file.txt # doesn't work
Run Code Online (Sandbox Code Playgroud)

对这个问题的任何帮助

谢谢

bash sed

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

如何将反斜杠参数传递给脚本?

我只想在文本文件中附加一个用户输入参数。我正在使用以下命令:

echo "$2" >> "./db.txt"
Run Code Online (Sandbox Code Playgroud)

$2预计用户设置一个路径,如:D:\Projects\MyProject。它写入文件,但没有反斜杠。结果是:

D:项目我的项目

我在任何地方都找不到如何解决这个问题。我试过使用-e-Eparams(取自here),但在这种情况下似乎没有什么区别。

bash shell sh

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

用sed替换文本文件中的一行

我有一些bash变量,我想用一个只有这些变量值的文本文件替换一些行.

举一个人为的例子.

假设我有一个名为test的文件(数字表示行号,而不是文件中的文本.)

  1. 玛丽
  2. 一点
  3. 羊肉

我想用线替换第3行45 56.在我的bash文件中,我存储了XL = 45和XU = 56,我试过了

XL=45
XU=56
sed -i '3s/.*/ $XL $XU/' test 
Run Code Online (Sandbox Code Playgroud)

然而,这将使用$ XL和$ XU替换第三行而不是实际值.我该怎么做呢?

我知道显而易见的解决方案是将sed命令中的$ XL和$ XU替换为实际值,但我想在我的长文本文件中替换许多这样的行.所以我想在顶部定义XL和XU作为变量,所以我不必在任何地方改变我的值.

bash sed

0
推荐指数
2
解决办法
1355
查看次数

变量在 sed 命令中不起作用

如何使用变量代替3下面的命令?

sed -i '3s/$/ newvalue/' filename
Run Code Online (Sandbox Code Playgroud)

我试过

var=1
sed -i '$vars/$/ newvalue/' filename
sed -i "$vars/$/ newvalue/" filename
Run Code Online (Sandbox Code Playgroud)

shell sed

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

标签 统计

sed ×7

bash ×6

shell ×5

linux ×3

unix ×3

hostname ×1

quotes ×1

sh ×1

syntax ×1