unix - 使用 sed 命令将双辅音字母替换为一个
问题描述
sed
如何使用Linux 命令仅用一个字母替换双辅音。示例:威廉 -> 威廉。grep -E '(.)\1+'
commands 会在一行模式中查找两个相同辅音后面的单词,但是如何将它们替换为仅出现一次的字母?
我试过了
cat test.txt | head | tr -s '[^AEUIO\n]' '?'
解决方案
tr
是全有还是全无;无论上下文如何,它将替换所有出现的选定字符。对于正则表达式替换,请查看sed
-您甚至将其包含在问题的标签中,但您似乎没有探索过它可能有用吗?
sed 's/\(.\)\1/\1/g' test.txt
点匹配任何字符;仅限于辅音,将其更改为[b-df-hj-np-tv-xz]
或任何有意义的内容(可能扩展到包括大写;可能包括重音字符?)
被理解的正则表达式方言sed
更像是grep
没有被理解的方言-E
(因此所有的反斜杠);虽然一些sed
实现也支持这个选项来选择 POSIX 扩展的正则表达式方言。
两者都不sed
需要为它们读取标准输入(尽管隐晦地tr
不接受文件名参数)。也见 tangentially没用的 cat?cat
tr
推荐阅读
- php - 在“[||]”之后在php中替换字符串
- vba - 无法在 selenium vba 脚本中使用代理
- docker - Caddy 不转发代理
- java - 无法运行肥皂网络服务
- c# - 我的 Asp.net 核心应用程序显示 System.stackoverflow 异常
- javascript - Javascript - 迭代嵌套数组
- typescript - 打字稿错误:“元素隐式具有'任何'类型,因为类型'错误'没有索引签名”
- javascript - 创建基于参数的jQuery插件
- java - 为什么 javac 不能对带有有界类型参数作为返回类型的静态方法的调用站点进行类型检查?
- python - 模块导入中的点(python 3.x)