在未压缩的.tar中编辑文本文件

时间:2018-05-03 14:28:03

标签: bash awk sed tar

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

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

3 个答案:

答案 0 :(得分:3)

您可以使用tar --deletetar --update替换tar中的文件

答案 1 :(得分:0)

我认为你无法解决压缩问题。你可以做一个循环来解压缩你的文本文件,用sed编辑并再次压缩。在其他情况下,我认为这是不可能的......

也许是这样的

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

在遍历所有文件的循环中

答案 2 :(得分:0)

Thanx的灵感格莱美奖,这是一个最小的例子,以防有人来找同样的。 在文件夹中创建一些数据:

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