linux - 使用 sed 将每个单词的第三个字符括起来

标签 linux bash unix sed

我正在尝试使用 sed 将文本文件中每个单词的第三个字符括起来。我试过操纵:

sed 's/\(\b[A-Z]\)/\(\1\)/g' filename

除了将第一个字符而不是第三个字符括起来外,这满足了我的需要。

它给了我:“Welcome To The Geek Stuff”=> “(W)elcome (T)o (T)he (G)eek (S)tuff”

我想要的是:“Welcome To The Geek Stuff”=>“We(l)come To Th(e) Ge(e)k St(u)ff”

如何给每个单词的第三个字符加括号?

最佳答案

此 sed 命令必须将单词中出现的每三个字符放在括号内。

$ echo 'Welcome To The Geek Stuff' | sed 's/\b\([A-Z][a-z]\)\([a-z]\)/\1(\2)/g'
We(l)come To Th(e) Ge(e)k St(u)ff

$ echo 'Welcome To The Geek Stuff' | sed 's/\b\([a-z][a-z]\)\([a-z]\)/\1(\2)/gi'
We(l)come To Th(e) Ge(e)k St(u)ff

按顺序添加 i 修饰符以进行不区分大小写的匹配。

关于linux - 使用 sed 将每个单词的第三个字符括起来,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29311170/

相关文章:

linux - 如何在Linux上开发windows程序集

c++ - (linux) 如果支持 Opengl 4,我怎么知道在 C++ 程序中?

linux - 无法删除超过三天的目录

c - 如何在发送特定信号后阻止进程关闭?

bash - 如何通过 ssh 检查目录是否存在并将结果返回到主机

linux - 在 'grep' 中 - 为什么它会这样?

linux - 是否有用于检查 ELF 文件的任何 emacs 模式

linux - Android处理不构建程序

c - 当我从进程内部检查进程的 CPU 使用率时,top 命令返回 0% CPU 使用率

Bash 中的 Java 格式正则表达式