gsed 是否有相对大小写说明符?

Is there a relative case specifier for gsed?

sed 命令中不区分大小写的替换符号本身似乎不区分大小写。将 i/I 附加到 sed 语句似乎给出了相同的结果。

echo a | gsed ’s_A_Z_i’

returns: Z

echo a | gsed ’s_A_Z_I’

还有returns: Z

echo A | gsed ’s_A_z_I’

returns: z

echo A | gsed ’s_a_Z_i’

returns: Z

gsed returns 特定于案例的替换文本。

有没有一种紧凑的方法来指定不区分大小写的搜索,并在与查找的大小写匹配的情况下进行替换? (将 a 替换为 z,将 A 替换为 Z)

当然,这个问题可以用两个命令解决,但我正在寻找更紧凑的东西。

其次,i/I后缀的效果有区别吗? (不是 -i 标志)

这与[上一个问题](How to use GNU sed on Mac OS X) 相同,但有所不同!关于在 OSX 中使用 gnu-sed,在标准自制程序安装后。

我心中没有具体的应用。我正在 OSX 上学习 gnu-sed 的一些复杂知识,想知道它是如何处理大小写的。

s 命令的 i/I 选项仅修改 PATTERN 而不会 影响REPLACEMENT。请想象一下下面的用法:

str='Login'
echo "$str" | sed 's/login/Login/i'

此示例尝试规范化 upper camel case 中的输入 接受 loginLogin。如果 i/I 选项影响 REPLACEMENT,我们无法得到预期的结果。

如果您想将 a 映射到 z 和 A 到 Z,请尝试:

sed y/Aa/Zz/