我认为 i
和 I
在 sed 中都是 ignorecase 的意思,例如
$ echo "abcABC"|sed -e 's/a/j/gi'
jbcjBC
$ echo "abcABC"|sed -e 's/a/j/gI'
jbcjBC
但是,看起来它只是用于替换:
$ echo "abcABC"|sed -e '/a/id' # <--
d
abcABC
$ echo "abcABC"|sed -e '/a/Id'
$
这真是令人困惑。
我在哪里可以找到 sed 正则表达式含义的完整引用?
最佳答案
i
和 I
确实是 s
命令的标志;它们通常不适用于 sed
中正则表达式的所有使用。 GNU 手册页对 s
接受哪些标志(甚至 s
接受标志的事实)奇怪地保持沉默,所以你必须查看信息页面(运行信息 sed
)。
正则表达式的其他用途由使用它们的函数决定。
在您的其他示例中,i
和 I
是应用于与正则表达式 a< 匹配的行的实际
; sed
函数i
表示插入文本。据我所知,I
是一个无法识别的函数,因此被忽略,将 d
保留为函数,删除了该行。 (我对 I
的解释可能是错误的。)
关于regex - sed中 'i'和 'I'的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32142679/