未替换模式中的非转义换行符

时间:2015-11-05 16:29:06

标签: sed

我有一个包含100个国家/地区列表的txt文件,但周围没有引号。我想改变这个

Canada
USA

进入这个

countries['Canada']=true

这是我正在尝试的sed命令,'\ 1'代表引号中的国家。

sed -e "s/\(.*\)/countries['\1']=true" source.txt > output.txt

我得到的错误是

  

替换模式中未转义的换行符

我需要什么sed命令来实现我想要做的事情,以及为什么我会收到此错误

2 个答案:

答案 0 :(得分:3)

你最后错过了一个尾随/

                                       v
$ sed -e "s/\(.*\)/countries['\1']=true/" file
countries['Canada']=true
countries['USA']=true

另请注意,您不需要捕获组,只需将所有内容与.*匹配,然后使用&将其打印回来:

            |-------------|
            vv            v
$ sed -e "s/.*/countries['&']=true/" a 
countries['Canada']=true
countries['USA']=true

答案 1 :(得分:1)

我只想在开头和结尾添加内容:

sed -e "s/^/countries['/" -e "s/$/']=true/" source.txt > output.txt