regex - 使用sed、awk等中间点字符后分隔

标签 regex bash awk sed

我需要你的帮助;我保证我真的很努力地寻找答案,但没有运气。

我想在每次出现的“·”(中间点)字符之间分隔文本 (基本上是按音节)。

echo con·grat·u·late | sed -e 's/·.*$/·/1'

上面的代码输出:

con·

这是我想要的第一部分,但最终我想要的输出是:

con·
grat·

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/

相关文章:

java - 正则表达式重复字符数

RedHat Linux 5 上的 Java 安装

bash - 无法从.bash_logout使用printf颜色

linux - 在 Bash 中格式化文本输出

linux - 如何在 unix 中处理同一文件中的嵌套分隔符

java - 匹配正则表达式中的任何字符?

c# - 按分隔符匹配正则表达式模式

正则表达式,编写玩具编译器,解析,注释删除器

bash - 用于对 debian 版本号进行排序的 shell 脚本 (line_5.4.3-2)

linux - sed 字符串大小写与 "\<>"的匹配问题?