编辑未压缩的文本文件。tar

edit a text file in an uncompressed .tar

我创建了一些 .tar 文件夹,其中大部分包含一些文本文件。是否可以从命令行(bash 和相关工具)以编程方式编辑文本文件,而无需完全解压缩 tar?

上下文:这些 .tar 是由脚本创建的,我意识到我犯了一个错误。我正在寻找最有效和最简单的解决方案来编辑​​文本文件单行的一部分。

我想你不解压是做不到的。你可以做一个循环来解压缩你的文本文件,用 sed 编辑并再次压缩。其他情况,我认为是不可能的...

可能是这样的

xzcat blah | sed /../../ | xz blah

在遍历所有文件的循环中

您可以使用 tar --deletetar --update 替换 tar

中的文件

感谢格莱美的启发,这里是一个最小的例子,以防有人来找同样的东西。 在文件夹中创建一些数据:

cd /tmp; 
mkdir dir1; 
echo "foo" >> ./dir1/test_txt; 
echo "bar" >> ./dir1/test_txt; 

打包成 tar:

tar -cf test_tar.tar dir1;

删除我们要解压编辑的目录。

rm -rf dir1; 

并且仅从 tar 文件夹中解压缩相关文件并编辑:

警告:

Tar 仅当时间戳自上次编辑后发生更改时才更新!

这就是为什么这里有一个睡眠命令(改变时间戳)。

sleep 1
tar -xf test_tar.tar dir1/test_txt
sed -i 's/foo/baar/' dir1/test_txt ; 

更新相关文件。

tar -uf test_tar.tar dir1/test_txt

检查这是否有效:

tar -xf test_tar.tar dir1
cat ./dir1/test_txt

[...]$ 
baar
bar