我要给一些古籍文本行加上包裹标签,如 p、h2 之类,是用 sed 做的;调试使用中发现,当行中包含 4 字节的生僻字时,.*这个匹配会失败,从而导致加包裹标签失败。
下面的测试是希望把问题说清楚,实际下面的 sed 命令是一个较大的脚本中一个长管道中的一环。测试文本中的 4 字节生僻字是“𢢼”。
请不吝赐教!
注释:赋值测试字符串给变量 a
qhel@qhel-vagrant MSYS /d/Documents/project/coding/guji
$ a="公乃密遣解𢢼、高祚等乘險夜襲"
注释:查看字符串长度
qhel@qhel-vagrant MSYS /d/Documents/project/coding/guji
$ echo ${#a}
15
注释:替换失败
qhel@qhel-vagrant MSYS /d/Documents/project/coding/guji
$ echo $a | sed "s/^[^#=;%:|-].*$/<p>&<\/p>/g";
公乃密遣解𢢼、高祚等乘險夜襲
=====
注释:去掉生僻字重新赋值给 b
qhel@qhel-vagrant MSYS /d/Documents/project/coding/guji
$ b="公乃密遣解、高祚等乘險夜襲"
qhel@qhel-vagrant MSYS /d/Documents/project/coding/guji
$ echo ${#b}
13
注释:替换成功
qhel@qhel-vagrant MSYS /d/Documents/project/coding/guji
$ echo $b | sed "s/^[^#=;%:|-].*$/<p>&<\/p>/g";
<p>公乃密遣解、高祚等乘險夜襲</p>
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.