gsed是否有相对的案例说明符?

Spo*_*dda 3 macos homebrew gnu sed

sed命令中不区分大小写的替换指示符本身似乎不区分大小写。将i / I附加到sed语句似乎会产生相同的结果。

echo a | gsed ’s_A_Z_i’
Run Code Online (Sandbox Code Playgroud)

返回:Z

echo a | gsed ’s_A_Z_I’
Run Code Online (Sandbox Code Playgroud)

还返回:Z

echo A | gsed ’s_A_z_I’
Run Code Online (Sandbox Code Playgroud)

返回:z

echo A | gsed ’s_a_Z_i’
Run Code Online (Sandbox Code Playgroud)

返回:Z

gsed返回特定于案例的替代文本。

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

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

其次,i / I后缀的效果是否有所不同?(不是-i标志)

这与[上一个问题](如何在Mac OS X上使用GNU sed)不同,但与之不同!在标准自制软件安装后,在OSX中使用gnu-sed的问题。

我没有特定的应用程序。我正在学习OSX上gnu-sed的一些复杂之处,并且想知道它如何处理大小写。

tsh*_*ono 6

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

str='Login'
echo "$str" | sed 's/login/Login/i'
Run Code Online (Sandbox Code Playgroud)

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

如果要将a映射到z,将A映射到Z,请尝试:

sed y/Aa/Zz/
Run Code Online (Sandbox Code Playgroud)

  • @Spookpadda:请看一下:[当有人回答我的问题时该怎么办?](http://stackoverflow.com/help/someone-answers) (3认同)