Linux里面归档和压缩的区别是什么?

Linux里面归档和压缩的区别是什么?,第1张

归档:把多个文件组合到一个文件中。归档好处是,把文件数目变少,有利于降多个文件作为电子邮件附件发送,以及备份文件。压缩:利用算法将文件有损或无损地处理,以达到保留最多文件信息,而令文件体积变小。压缩好处就是节约硬盘空间,以及减小电子邮件附件的大小,提高传输效率。归档工具:tar cpiotar是Unix和类Unix系统上的打包工具,可以将多个文件合并为一个文件,最初的设计目的是将文件备份到磁带上(tape archive),因而得名tar。压缩工具:zip,gzip,uncompress,bzip2tar中主要用到的参数c 创建归档x 提取归档t 测试或列出归档内容v 显示详细信息f 指出要创建或提取的归档文件名称z 使用gzip压缩类型j 使用bz2压缩类型r 追加 gzip :#gzip filename //压缩一个文件,但是压缩后原文件会被删除 #gunzip filename.gz //解压后.gz的文件会被删除 #gzip -d filename.gz //相当于命令gunzip file.gz #gzip -c filename >>filename.gz //用来实现即压缩原文件又保留原文件 #gzip -n filename //自定义压缩级别 #zcat filename.gz //不解压缩的情况下查看压缩文件的内容bzip: #bzip2 -k filename//压缩后保留原文件 #bzip2 -k filename.bz2//解压缩是保留原文件 #bzcat filename.bz2 //不用解压缩直接查看压缩文件内容bzip也是只能对单个文件压缩,不能压缩目录zip :可以同时归档并且压缩 #zip message.zip file1 file2 file3 //同时把几个文件压缩在一个文件里面 zip这个工具可以对目录进行压缩,压缩后的名字可以自己指定

当大家看到标题时脑中闪过的大概是铺天盖地baidu, google出来的冗余的各类使用介绍,老生常谈希望能让大家对这三个文本工具有新的理解。

grep不做过多的介绍, 打印出匹配的行, 着重点在于输出结果并不对文本本身做修改。

有个关于grep的小故事, 从sed和grep能追溯到最初的unix行编辑器ed而grep的命名代表 g(全局)/re(正则表达式)/p(打印)正是ed中全局打印行匹配的语法. grep自身的劣势在于无法实现多行匹配, 这时sed和awk相继出现弥补了grep的不足。

在进入sed的相关讨论之前,先就sed跟awk之间进行简单的比较。

可使用指定的脚本文件对相应文本进行编辑。

sed -f 'script filename' or stdin

awk -f 'script filename' or stdin

默认全局匹配并且拥有自身的主输入循环。

除去影响控制流的命令或语句(sed中: t,bawk中continue,break等)默认对文本的每一读取的行依次执行相应的命令或语句。

awk相较于文本编辑工具更像是一门语言,awk条件、循环、判断语句有显性的标识(if,while,for...);而sed只存在单一的判断逻辑(参考b label,t label)。

取出upstream awk_test对应的配置块:

Solution1:

Solution2:

相较之下Solution 2不需要复杂的判断,只需通过寻址来匹配并打印相应的文本;Solution 1更适合于进行多行匹配并替换。另一方面,Solution 1中sed通过创建多行空间模式并输出,而awk通过修改记录分隔符来实现多行匹配的不同。

awk拥有系统变量(FS,RS,OFS,ORS...)、内置函数、数组数据结构、传参(-v var=value)、引用系统命令(通过system() getline() close()函数)等。

awk除去主输入循环还存在BEGIN和END过程,用于某些在处理输入之前或者处理输入完成之后的 *** 作。

sed也有过人之处,如果对sed的工作模式进行深入了解,会发现有一个叫做保持空间(hold space)的东西,下图大体描述了sed的工作模式,并且阐述了模式空间(pattern space)跟保持空间(hold space)之间的联系。模式空间跟保持空间中的内容可进行删除,交换等。

sed的指令集都是单一的字母,并且有option可直接修改文件。而awk可能需要指定内置变量的值,或是通过输出重定向保存为新的文件。

综上所述:

grep适用于单行匹配打印的场景;

sed适用于多行模式的替换的场景;

awk适合更多的逻辑表达式并输出的场景。

但三个命令都需要文本格式统一化的大前提,对于一个文本中的多种格式,可以先将同一种格式的内容整理到文件中,再将其他格式再分别整理到新的文件中。

统一文本格式固然重要,能准确匹配意图的正则表达式也必不可少,这也是大家头疼的部分。如若有机会,我会再跟大家介绍文本匹配中磨人的小妖精——正则表达式。它在不同的命令中、语言中支持不同的标准,更易于与Unix-like系统的file globbing混淆,常常让人咬牙切齿,欲罢不能。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8488281.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-17
下一篇 2023-04-17

发表评论

登录后才能评论

评论列表(0条)

保存