【发布时间】:2016-12-02 17:01:23
【问题描述】:
我正在创建的部分 shell 脚本采用纯文本文件列表...
11111.jpg
22222.jpg
33333.jpg
...并附加一个存储在变量中的用户定义前缀,以创建如下所示的路径列表:
user/defined/prefix/11111.jpg
user/defined/prefix/22222.jpg
user/defined/prefix/33333.jpg
我正在尝试使用 sed 以这种方式添加前缀:
sed -e 's/^/prefix/' oldFile > newFile.new
变量被正确分配:
echo $selectedPrefix
user/defined/prefix
不要将单引号、双引号组合起来,以便 sed 使用变量的 ACTUAL 值,而不仅仅是变量名。
sed -e 's/^/$selectedPrefix/' oldFile > newFile.new
产量:
$selectedPrefix11111.jpg
$selectedPrefix22222.jpg
$selectedPrefix33333.jpg
帮助!我确信解决方案很简单,但我觉得我已经尝试了一切......
【问题讨论】:
-
我建议使用双引号。
-
谢谢大家!那么这基本上是一种情况,因为我的变量包含'/'我需要使用其他东西作为sed的分隔符?在这种情况下,我可以按照您的示例使用 '~' 或其他什么?
-
您可以使用任何其他字符作为分隔符,例如
|或#或@ -
你可以试试 sed -e
"s/^/${selectedPrefix//\//\/}/" oldFile > newFile.new。这样您就不必担心要使用什么其他分隔符了。