regex - 如何在 sed 中转义方括号

标签 regex bash sed

<分区>

我正在使用 grep 和 sed 解析遗留 C 代码,在尝试替换方括号时,发生了一些奇怪的事情。

以下替换方括号的代码工作正常:

$ echo "xyx[xzx]xyx"| sed 的|[\[]| |g'

结果:

xyx xzx]xyx

当我现在将 \] 添加到 sed 的字符串中以替换方括号时,它停止工作:

$ echo "xyx[xzx]xyx"| sed 的|[\[\]]| |g'

现在的结果是:

xyx[xzx]xyx

据我所知,这是转义方括号的正确方法。

我做错了什么?

我在 Ubuntu 14.04 机器上运行它。

最佳答案

你甚至不需要逃避:

echo "xyx[xzx]xyx" | sed 's|[][]| |g'
xyx xzx xyx

但是请记住,] 然后 [ 的顺序在这里很重要。

关于regex - 如何在 sed 中转义方括号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27973519/

相关文章:

linux - 如何匹配文件中包含某些单词的前三行

linux - 如何使用shell变量更改特定位置的字符

正则表达式以空格开头,后跟数字

Java 程序是否仅为某些类型的 CSV 文件创建扫描仪?

linux - 如何在循环中更改文件名?

php - 标准输出影响SIGKILL?

r - 如何在R中的全文字符串模式之间提取唯一的字符串?

javascript - 使用正则表达式检查 dd-mmm-yyyy 中的 jQuery 数据格式

r - 编织器与 bash : change working directory

javascript - 将 Sed 函数转变为 JavaScript 正则表达式