我想知道是否有人可以帮助我使用SHELL脚本来完成以下工作:
从zip文件中提取文件,并在进行一些编辑后将其重新放入,例如使用sed
进行替换。
我想避免将zip文件的所有内容解压缩到临时文件夹中。 zip文件可能包含与我想用编辑替换的文件同名的文件。在这种情况下,我想在zip文件中指定此类文件的完整路径。
有没有什么好方法可以完成这项任务?
非常感谢。
答案 0 :(得分:10)
从zip文件中提取文件:
解压缩file.zip文件/ you / want / to / extract / the_file.txt
修改the_file.txt
放回去:
zip file.zip file / you / want / to / extract / the_file.txt
这应该让你开始。
答案 1 :(得分:4)
我没有任何便于测试的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(完整帮助),在示例流下。
我希望这会有所帮助。
答案 2 :(得分:0)
您可以使用fuse-zip将zip文件安装到某个位置并编辑该文件。 看看http://code.google.com/p/fuse-zip/
fuse-zip my.zip /tmp_location
edit some file (sed ...)
fusermount -u /tmp_location
答案 3 :(得分:0)