使用 sed 获取单词的第一个字母
我需要一个打印名字第一个字母的 bash 脚本。示例:Ruben Van Den Bosshe 变为 RVDB 或 Ken Van de Wilde 变为 KVdW
我想使用 sed 命令。
I need a bash script that prints the first letter of a name. Example: Ruben Van Den Bosshe becomes RVDB or Ken Van de Wilde becomes KVdW
I want to use the sed command.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
可能有一种更简洁的方法可以做到这一点,但以下似乎可行:
要稍微分解该正则表达式,它依次匹配以下内容:
\(\ w\)
\w*
\( \|$\)
该序列被第一组中捕获的任何内容替换: <代码>\1
There's probably a neater way of doing this, but the following seems to work:
To break down that regular expression a bit, it matches the following in turn:
\(\w\)
\w*
\( \|$\)
That sequence is replaced with whatever was captured in the first group:
\1
这应该在 sed 的所有 POSIX 实现中兼容:
This should be compatible across all POSIX implementations of sed:
Kev 的答案可以稍微改进:
或者如果所有单词都是两个或更多字符,甚至可以缩短为:
如果有人知道如何提取单个字母单词的特殊情况并将其合并到上面的正则表达式中,我会很感兴趣。
Kev's answer can be improved slightly:
or even shortened if all words are two characters or more to:
If anyone knows how to extract the special case of a single letter word and incorporate it into the above regex I would be interested.