Shell 从zip文件中提取文件并在编辑后将其放回zip文件的最佳方法
我想知道是否有人可以帮助我使用SHELL脚本来完成以下工作: 从zip文件中提取一个文件,并在编辑后将其放回,例如使用Shell 从zip文件中提取文件并在编辑后将其放回zip文件的最佳方法,shell,Shell,我想知道是否有人可以帮助我使用SHELL脚本来完成以下工作: 从zip文件中提取一个文件,并在编辑后将其放回,例如使用sed进行替换 我希望避免将zip文件的所有内容提取到临时文件夹中。zip文件可能包含与我要用编辑替换的文件同名的文件。在这种情况下,我希望在zip文件中指定此类文件的完整路径 有什么好办法来完成这项任务吗 非常感谢 从zip文件中提取文件: 解压file.zip file/you/want/to/extract/the_file.txt 修改_file.txt 把它放回去: z
sed
进行替换
我希望避免将zip文件的所有内容提取到临时文件夹中。zip文件可能包含与我要用编辑替换的文件同名的文件。在这种情况下,我希望在zip文件中指定此类文件的完整路径
有什么好办法来完成这项任务吗
非常感谢
这应该可以让你开始了。我手头没有任何zip文件可供测试。但继续使用holygeek的解决方案,我认为您甚至不必将其保存到磁盘,而是通过一些管道运行它
unzip -p file.zip /path/2/your/file.txt \
| sed 's/x/y/g' \
| zip file.zip /path/2/your/file.txt -
注意最后一个“-”很关键,它告诉zip从stdin读取数据
这来自zip-h2(完整帮助),在示例streams下
我希望这有帮助。您可以使用fuse-zip将zip文件装载到某个位置并编辑该文件。 看
您可以使用以下命令 解压-jo MyZipFilw.zip*.xml-d xml 有关详细信息,请参阅博客:
+1谢谢!第一次解压实际上并不会从zip文件中删除该文件。第二个zip实际上覆盖了原始内容。对的在第一步中是否有方法从zip文件中删除(仅)目标文件?是,它不会从zip文件中删除该文件。要从zip文件中删除该文件,您必须执行一个单独的步骤:zip-d file.zip file/To/delete.txt,我在zip手册页的-d或--delete选项中查找了它。你看不到它,但是有一个被删除的帖子,有人已经建议FUSE,OP说这不是一个选项。在脚本中挂载文件并进行更改和卸载是非常简单的。做其他答案所做的事情也是非常简单的。事实上,更简单。总之,简单不是重点;正如我所说,OP说保险丝根本不是一个选项。他说,“我没有安装保险丝的奢侈”,也许这会帮助其他有类似问题的人
fuse-zip my.zip /tmp_location
edit some file (sed ...)
fusermount -u /tmp_location