如何用Bash sed将文本行尾替换为单引号加逗号?
解决sed行尾替换为单引号加逗号的问题
你遇到的问题是shell引号解析规则导致的,原命令里的单引号未正确闭合,所以shell一直等待输入来补全引号。以下几种方法可以解决:
方法一:用双引号包裹sed脚本
双引号内可直接包含单引号,shell不会对其做特殊解析:sed "s#$#',#g" test.txt方法二:单引号拼接转义单引号
在shell中,通过\'输出单引号,将sed脚本拆分为多个单引号包裹的部分拼接:sed 's#$#'\'',#g' test.txt逻辑是:
's#$#'+\'(输出单引号) +',#g',shell会自动合并为完整的替换规则。方法三:用ASCII码表示单引号
sed支持用\x27代表ASCII码为0x27的单引号,无需处理引号冲突:sed 's#$#\x27,#g' test.txt
执行任意一种命令后,test.txt内容会变为你期望的结果:
aaa', bbb', ccc',
内容的提问来源于stack exchange,提问作者fauzimh
相关产品推荐
相关产品推荐

