使用 sed 添加到字符串的中间

使用 sed 添加到字符串的中间

我对 sed 脚本完全陌生。我想制作一个脚本,以便它要求用户输入要插入文件中的值。我找不到正确的代码

所以我在文本文件中的行看起来像这样

path =

我想输入用户的路径,因此该行如下所示:

path = /dev

通过反复试验我只有:

read -p "Enter path name: " PT
echo "$( sed -i '/path/ s/.*/& $PT/' textfile )"

这使

path = $PT

你能帮我提供正确的代码吗

答案1

单引号内不会发生变量扩展,请改用双引号。

+ 因为你的变量将包含/作为路径的一部分。对于 GNU,sed您应该使用不同的替换分隔符。

read -p "Enter path name: " PT
sed -i "\#path# s#.*#& $PT#" infile

答案2

read -p "Enter path name: " PT
sed -i "/path/ s#.*#& $PT#" textfile

您需要使用双引号,而不是单引号。单引号保护字符串免受 shell 的影响,但在这种情况下,您希望 shell 扩展 的值$PT

还,

echo "$( ... )"

...与( 中的内容)相同$( ... )

相关内容