regex - sed中 'i'和 'I'的区别

标签 regex bash sed

我认为 iI 在 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 正则表达式含义的完整引用?

最佳答案

iI 确实是 s 命令的标志;它们通常不适用于 sed 中正则表达式的所有使用。 GNU 手册页对 s 接受哪些标志(甚至 s 接受标志的事实)奇怪地保持沉默,所以你必须查看信息页面(运行信息 sed)。

正则表达式的其他用途由使用它们的函数决定。

在您的其他示例中,iI 是应用于与正则表达式 a< 匹配的行的实际 sed 函数; i 表示插入文本。据我所知,I 是一个无法识别的函数,因此被忽略,将 d 保留为函数,删除了该行。 (我对 I 的解释可能是错误的。)

关于regex - sed中 'i'和 'I'的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32142679/

相关文章:

javascript - 正则表达式或管道未按预期工作

php - 双重扩展将绕过扩展检查规则

php - 递归正则表达式不起作用

c++ - 使用参数作为 Qt 资源运行 Bash 脚本

xml - 从自定义 xml 中提取字段

bash从两个文件中获取信息

regex - Bash中如何拆分、映射、加入?

linux - 将 ssh 脚本执行时间戳记录到服务器上的文件中

regex - "sed"特殊字符处理

linux - 使用 sed 将 crontab 文件中的文本替换为斜线