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

dav*_*erc 10 unix macos grep sed

我试过这个命令,

grep '/static' dir/* | xargs sed -i 's/\/static//g'
Run Code Online (Sandbox Code Playgroud)

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

要将文件中的字符串替换为与输出相同的输入文件,我通常会这样做:

sed 's/\/static//g' filename.txt > new_filename.txt ; mv new_filename.txt filename.txt
Run Code Online (Sandbox Code Playgroud)

Gor*_*son 24

OS X的版本sed确实支持-i,但它需要一个参数来告诉它用于备份文件的文件扩展名(或""没有备份).顺便说一下,你想得到的grep -l只是文件名.

grep -l '/static' dir/* | xargs sed -i "" 's/\/static//g'
Run Code Online (Sandbox Code Playgroud)