在 SED 中使用变量 [重复]

Posted

技术标签:

【中文标题】在 SED 中使用变量 [重复]【英文标题】:Use Variable in SED [duplicate] 【发布时间】:2019-05-18 04:52:55 【问题描述】:

我无法在 sed 中扩展此变量。我已经尝试了所有我能想到的。

我正在尝试将 file1 的 md5sum 放在 file2 的第 10 行

我可以从正则表达式中取出 $x 并输入一些文本,它就可以工作了。它只是不接受变量。 printf 变量没问题。

#!/bin/bash
 x=$(md5sum /etc/file1)
 printf "$x \n"
 sed -i 10"s/.*/$x/g" /usr/bin/file2

【问题讨论】:

你遇到了什么错误? 【参考方案1】:

由于md5sum 的输出包含/,因此您可以使用此命令,该命令使用~ 作为正则表达式分隔符而不是/

sed -i "10s~.*~$x~" /usr/bin/file2

【讨论】:

您好,是的,和我发现的一样……是 md5sum 的输出包含 /etc/file1 导致 sed 阻塞。感谢您的帮助。【参考方案2】:

在我通过运行 $x thru 从 md5sum 输出(包括文件名和目录)中减少变量之后:

x=$(echo $x | head -n1 | awk 'print $1;')

只留下它工作的 MD5 并退出错误。

【讨论】:

以上是关于在 SED 中使用变量 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

尝试替换环境变量时,Linux sed命令无法正常工作[重复]

Sed用shell变量替换[重复]

AIX 脚本中的 sed 不适用于特殊字符 [重复]

在mac上使用sed删除文件中第一次出现的字符串[重复]

Sed:如果其中不包含chaine,则替换字符串[重复]

使用 sed [重复] 替换包含反斜杠的字符串