合并 2 个正则表达式 - 获取带连字符的字符串的第一个字符

merge 2 regular expressions - get the first characters of a hyphenated string

有谁知道如何最好地合并此语句中的两个 sed 命令:

$ echo "Apple-Boy-Cat" | sed 's/\B.//g;' | sed 's/-//g'
ABC

上面的工作正常,但我有一种挥之不去的感觉,我忘记了一些可以避免我的东西 运行 两个单独的 sed 语句。

我曾尝试执行 sed 's/\B.//g;y/-//' 但我收到未终止 y 命令的错误。

您可以使用正则表达式交替运算符 \|

$ echo "Apple-Boy-Cat" | sed 's/\B.\|-//g'
ABC

注意 \B 匹配两个单词字符或两个非单词字符。它与 \b 相反( 在单词字符和非单词字符之间匹配 )。

这不是 sed,而是显示如何使用 awk 获得相同的结果:

echo "Apple-Boy-Cat" | awk -F- '{for (i=1;i<=NF;i++) printf substr($i,1,1);print ""}'
ABC

它按-拆分字符串,然后打印每个单词的第一个字母。