在linux下怎么大量将"一串字符"都替换为中文标点的“同样一串字符”
在linux下怎么大量将"一串字符"都替换为中文标点的“同样一串字符”。 gedit下有替换工具,不清楚怎么表示任意一串字符,而且就算知道这样一串字符,还必须同样将同样这串字符传递给等下要替换的同样那串文字中。 具体效果就是这样的: "测试文字" → “测试文字”
这个文本很大,必须用批处理的方式,请问有好的方法吗?
看了一段时间文档,本来希望节省点时间的,看了不过自讨没趣罢了。 命令如下。
sed -e 's/(")([^"]*)(")/“\2”/g' test>test1
其中s表示替换,() 括住一个匹配值,然后后面可以用\1引用。\2类似。然后/g'表示全局。 具体请参看这个网站: http://www.360doc.com/content/12/0209/14/8739082_185277670.shtml
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
可以考虑用sed,那个东西命令好复杂,可以自己研究看看。
sed -i 's/(")([^"]*)(")/“\2”/g' test
没太看懂题目。如果是把所有英文标点转成对应的中文标点的话,使用 Python 的
str.translate
方法很适合。tr
命令不行,因为它不能正确处理多字节字符。方法1:
perl -pe 's/"(.+?)"/“\1”/g' originalfile > newfile
原文件不被修改,修改结果在新文件中
方法2:
perl -pi.back -e 's/"(.+?)"/“\1”/g' original_file
原文件不被修改,修改结果在original_file.back中
方法3:
perl -pi -e 's/"(.+?)"/“\1”/g' original_file
直接修改并替代