sed删除所有大写字母

时间:2011-12-07 23:34:42

标签: bash sed

我试图仅使用下面的sed命令在以下字符串中删除所有出现的大写字母,但它只输出我输入的刺痛 - 如何正确地替换?

echo "Dog boy Did Good" | sed 's/\([A-Z]\+\)/\1/g'

4 个答案:

答案 0 :(得分:7)

echo "Dog boy Did Good" | sed 's/[A-Z]//g'

答案 1 :(得分:2)

echo "Dog boy Did Good" | sed 's/[A-Z]//g'
og boy id ood

你没有任何东西替换某些东西(大写),你不需要对它进行分组,因为你以后不再使用它,而且你不需要+,因为g最后会全局执行替换。

答案 2 :(得分:1)

如果要完全删除它们,请不要在sed表达式的后半部分使用\ 1,因为它会在第一个匹配项中添加(这是您要替换的内容)

答案 3 :(得分:1)

现在你的答案很好,假设所有的大写字母都是通过[A-Z]表示的,这是普通美式英语的标准,但是{​​{3}},它有几个字母的变体{{ 1}}。

最好使用i机制,它将尊重当前的[[:upper:]]

locale(7)

我想提及的另一种选择; $ sed 's/[[:upper:]]//g' /etc/motd elcome to buntu 11.04 (/inux 2.6.38-12-generic x86_64) ... 命令可以轻松删除:

tr(1)