将 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/