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

时间:2015-01-17 07:42:07

标签: regex bash sed

有谁知道如何在此声明中最好地合并两个sed命令:

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

上述工作正常,但我有一种唠叨的感觉,我忘记了可以避免我运行两个单独的sed语句的东西。

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

2 个答案:

答案 0 :(得分:2)

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

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

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

答案 1 :(得分:1)

这不是sed,但展示了如何使用awk获得相同的结果:

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

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