我想用sed
替换到位的字符串。我尝试过两种方法:
sed -i 's/string_catcher/new_string/g' <file_name>
这会导致错误,因为它没有正确处理参数。This是我的信息来源。
然后,我想我可以直接写入文件:
sed 's/string_catcher/new_string/g' <file_name> > <file_name>
作为解决方法,我考虑将其写入新文件,然后通过覆盖将其复制回旧文件。但是这个won't工作,因为文件很大。需要几分钟才能在 vim 中打开。
但是,这会导致文件为空。为什么这些不起作用?解决方案?谢谢。
我使用的是 OSX Darwin Kernel 14.4。
选项-i
在 Linux 和 OSX 上有不同的语法。
如果你想sed
要修改原始文件而不在 Linux 上制作备份副本,您无需提供任何参数-i
:
sed -i 's/string_catcher/new_string/g' <file_name>
在 macOS 上,您必须提供一个空字符串作为参数-i
:
sed -i '' 's/string_catcher/new_string/g' <file_name>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)