如何用Perl单行命令给含§特殊字符的字符串添加引号?
给包含§的字符串添加单引号包裹的单行命令方案
你之前的命令逻辑完全错了——perl -p -i -e "~ s/[§]/\'/g" file是把字符串里的每个§替换成单引号,自然会得到FTN''NS这种结果,和“给整个字符串加引号”的需求完全不搭。
直接用下面的单行Perl命令就能搞定:
perl -p -i -e "s/(.*§.*)/'$1'/" file
命令说明:
-p:逐行读取文件内容,处理后自动打印-i:直接修改原文件(如果想备份原文件,改成-i.bak即可)s/(.*§.*)/'$1'/:匹配包含§的整行内容,然后把整行替换成'$1'($1代表匹配到的整行原文),相当于给整个字符串前后套上单引号。
如果行里没有§,命令不会做任何改动,完全符合需求。测试输入FTN§NS,执行后会输出'FTN§NS'。
内容的提问来源于stack exchange,提问作者Sunny Jangid
相关产品推荐
相关产品推荐

