8
sed在整个文件系统上就地删除行?
由于尚无法诊断的应用程序错误,我有数百台服务器装有完整的磁盘。有一个文件被重复的行填充了-不是日志文件,而是带有变量定义的用户环境文件(因此,我不能只是删除该文件)。 我编写了一个简单的sed命令来检查错误添加的行并删除它们,然后在文件的本地副本上对其进行测试。它按预期工作。 但是,当我在具有完整磁盘的服务器上尝试使用它时,大约收到以下错误(来自内存,而不是复制和粘贴): sed: couldn't flush /path/to/file/sed8923ABC: No space left on deviceServerHostname 当然,我知道这里没有空间了。这就是为什么我要删除内容!(sed我正在使用的命令会将4000+行文件减少到大约90行。) 我的sed命令就是sed -i '/myregex/d' /path/to/file/filename 尽管磁盘已满,有没有办法应用此命令? (它必须是自动化的,因为我需要将它作为快速修复程序应用于几百台服务器。) (显然,需要诊断应用程序错误,但是在此期间,服务器无法正常工作...。) 更新:通过删除我发现可以删除的其他内容解决了我所面临的情况,但是我仍然希望得到此问题的答案,这将对将来和其他人有所帮助。 /tmp不行 它在同一文件系统上。 在释放磁盘空间之前,我进行了测试,发现可以vi打开文件并运行以删除行:g/myregex/d,然后使用保存成功:wq。似乎应该可以自动执行此操作,而无需借助单独的文件系统来保存临时文件....(?)