linux - Sed 定界符与 Grep 不兼容

标签 linux sed grep

将 grep 与 sed 结合使用时,只要使用标准的正斜杠定界符就可以了。

find . -maxdepth 2 -xdev -type f -exec grep -i "teststring" -l {} \; -exec sed -i '/./d' {} \;

如果我将其更改为“+”或“#”等其他字符,则它不起作用(我需要更改它,因为测试字符串可能包含“/”字符并导致错误。

find . -maxdepth 2 -xdev -type f -exec grep -i "teststring" -l {} \; -exec sed -i '#.#d' {} \;

这个问题有办法解决吗?

最佳答案

您需要反斜杠第一个分隔符

有时用于 sed(例如 OSX)的 BSD 手册页并没有说清楚,但是对 sed 正则表达式地址使用任意分隔符仅在 RE 前面有反斜杠时才有效。

\xMATCHTHISxd

这将删除某处具有MATCHTHIS 的行。

关于linux - Sed 定界符与 Grep 不兼容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13865070/

相关文章:

linux - 如何加快对大量文本文件 (1TB) 的搜索

linux - 仅输出第一个模式行及其后续行

linux - 如何使用 cut 命令移动前缀

linux - 从终端在 linux 的所有 makefile 中搜索一个单词

bash - sed 分行(高级)

linux - 使用 awk 或其他转换最后一列中的日期格式

regex - 字符和数字的 grep 序列(仅限 grep)

linux - 如何使 z= 在 vi​​m 拼写检查中看起来像 ctrl-x s

c - 使用 exec() 系列运行 "cd"命令

linux - 如何检查 sed 命令是否替换了一些字符串?