我正在编写shell脚本来替换一个有URI的文件行。我在使用URI时遇到错误。
要放置的行:
source 'http://rubygems.org'
我的剧本:
#sed -i '1s/.*/ source 'https://rubygems.org' /' /Gemfile
无法识别单引号。
我得到错误:" sed:-e表达式#1,字符23:未知的选项,以及#s;'"
答案 0 :(得分:2)
您可以在sed命令中使用备用分隔符。
例如,多年前我有一个必须交换URL的sed行,我使用了@ at符号。
例如,创建一个文本文件' file.txt'以下内容: 我有来自加利福尼亚的unix操作系统
使用@而不是通常的斜杠分隔符在shell中运行以下命令。
$ sed 's@unix@linux@' file.txt
I have a linux operating system from California
答案 1 :(得分:1)
最简单的解决方案是使用类似的东西。
sed -i "1s,.*, source 'https://rubygems.org' ," /Gemfile
围绕sed脚本使用双引号以允许内部单引号和s,,,
而不是s///
(因为您可以使用任何单个字符作为所需的分隔符)。
答案 2 :(得分:0)
sed
接受不同的分隔符:
sed -i '1s|.*| source "https://rubygems.org" |' /Gemfile
在单引号内,您也可以使用双引号。