regex - 为什么这个 sed 命令不适用于正则表达式?

标签 regex linux sed

我想使用 sed 命令删除 Java 中的多行注释。如果我们使用像 a-zA-Z0-9 等字符范围,则正则表达式有效,但对于像 \w\S 这样的单词字符则不起作用。

测试文件内容:

hello world
/* abcd
efgh*/
world hello

使用的命令:

sed -i -e  "s/\/\*[\s\S]\*\///" <file>

预期结果:

hello world
world hello

实际结果:

hello world
 abcd
efgh*/
world hello

最佳答案

您可以使用grep使用正则表达式 (-E) 和反向匹配 (-v),即:

grep -Ev '(\/\*|\*\/)' < text.txt

输出:

hello world
world hello

关于regex - 为什么这个 sed 命令不适用于正则表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54108648/

相关文章:

java - 正则表达式查找具有唯一数字的数字

javascript - 从 PHP 到 Javascript 的正则表达式格式

python - 使用 bash 脚本处理 JSON

linux - board_ahci_mcp_linux 中的 mcp 代表什么?

python - 使用 h5py 在 debian python 中访问文件

linux - sed : add a string in specific line

javascript 正则表达式无法与邮政编码正常工作

Javascript Regex - 删除单个空格而不是双空格

html - 使用 sed 将 URL 转换为 HTML 链接?

linux - 如何使用 sed 替换包含斜杠的字符串?