我需要你的帮助;我保证我真的很努力地寻找答案,但没有运气。
我想在每次出现的“·”(中间点)字符之间分隔文本 (基本上是按音节)。
echo con·grat·u·late | sed -e 's/·.*$/·/1'
上面的代码输出:
con·
这是我想要的第一部分,但最终我想要的输出是:
con·
grat·
u·
late
这将涉及获取第 1-2 次和第 2-3 次出现的“·”之间的字符
如果有人能指导我正确的方向,我将不胜感激,剩下的我会自己解决。
编辑 抱歉,我错误地显示了我想要的输出。不过,您的解决方案效果很好。
由于将所有内容保持在一行对我来说很重要,我将如何输出第一个点和第二个点之间的文本,以输出:
grat·
乔纳森,我正在用 UTF-8 编码
再次抱歉问错了。
最佳答案
在 GNU sed 中你可以这样做:
echo con·grat·u·late | sed -e 's/·/&\n/g'
&
代表匹配的模式,在这个例子中是·
。
不幸的是,这在 BSD sed 中不起作用。
为了更便携的解决方案,我推荐这个 AWK, 它应该在 GNU 和 BSD 系统中工作:
echo con·grat·u·late | awk '{ gsub("·", "&\n") } 1'
关于regex - 使用sed、awk等中间点字符后分隔,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27629368/