macos - 当 -i 参数不受支持时,如何使用 grep 和 sed 替换多个文件中的字符串?

标签 macos unix sed grep

我试过这个命令,

grep '/static' dir/* | xargs sed -i 's/\/static//g'

但是我使用的 sed 版本不支持 -i 参数。

要将文件中的字符串替换为与输出相同的输入文件,我通常这样做:
sed 's/\/static//g' filename.txt > new_filename.txt ; mv new_filename.txt filename.txt

最佳答案

OS X 的版本 sed支持-i ,但它需要一个参数来告诉它备份文件使用什么文件扩展名(或 "" 不备份)。顺便说一句,你想要 grep -l只获取文件名。

grep -l '/static' dir/* | xargs sed -i "" 's/\/static//g'

关于macos - 当 -i 参数不受支持时,如何使用 grep 和 sed 替换多个文件中的字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11942306/

相关文章:

image - ImageMagick可以返回图像大小吗?

c - 来自信号处理程序的 longjmp()

windows - cmd.exe 有类似 sed 的实用程序吗?

unix - Unix下如何获取文件的修改日期(包括年份)?

java - 在 Maven 中添加依赖项

Android x86 蓝牙 macbook

java - 无法从 Java 代码运行 PATH 中的程序

linux - 使用 awk 或 sed 打印从第 n 到最后的所有列

regex - 从 STDOUT 中的不同位置提取 Bash 编号

macos - 找到 : -printf: unknown option