GNU sed 中 \u 和 \U 之间有什么区别

Ama*_*_05 3 bash command-line command sed

我在 sed 中遇到了这两个命令\uand \U(以及其他命令,例如\land \L)。我不得不承认我是一个新手,对 GNU sed 的经验很少。我尝试了以下两个命令,但得到了相同的结果:

# I have tested this on Ubuntu 20.04
echo "abc" | sed 's/./\u&/g' # output is: ABC
echo "abc" | sed 's/./\U&/g' # output is: ABC
Run Code Online (Sandbox Code Playgroud)

这两个命令的输出相同。那么,它们之间有什么区别呢?

dan*_*dan 5

在替换替换中,\u将下一个字符转换为大写,而\U将替换的其余字符转换为大写,或者直到\L或\E发生。

您的示例不会显示它们之间的区别,因为您一次仅替换一个字符。如果您使用 中的模式.*(而不是.)echo abc | sed 's/.*/\u&/',您将得到Abc。

这些命令记录在info sed和此处:https ://www.gnu.org/software/sed/manual/sed.html#The-_0022s_0022-Command