有谁知道如何在此声明中最好地合并两个sed
命令:
$ echo "Apple-Boy-Cat" | sed 's/\B.//g;' | sed 's/-//g'
ABC
上述工作正常,但我有一种唠叨的感觉,我忘记了可以避免我运行两个单独的sed语句的东西。
我曾尝试sed 's/\B.//g;y/-//'
但是我收到了一个未终止y
命令的错误。
答案 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
它将字符串分割为-
,然后打印每个单词的第一个字母。