Linux平台文件压缩打包及文本三剑客sed用法| 学习笔记

简介: 快速学习Linux平台文件压缩打包及文本三剑客sed用法

开发者学堂课程【Linux企业运维实战 - 入门及常用命令Linux平台文件压缩打包及文本三剑客sed用法】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/550/detail/7619


Linux平台文件压缩打包及文本三剑客sed用法


内容介绍:

一、压缩、解压缩及归档工具

二、文本处理工具 sed

 

一、压缩、解压缩及归档工具

(一)tar工具

1、tar(Tape ARchive,磁带归档的缩写,但是比较慢)

2、tar[OPTION]..

(1)创建归档

tar -cpvf /PATH/TO/SOMEFILE.tar FILE...

(2)追加文件至归档:注:不支持对压缩文件追加

 tar-r-f/PATH/TO/SOMEFILE.tarFILE...

(3)查看归档文件中的文件列表

 tar-t -f /PATH/TO/SOMEFILE.tar

(4)展开归档

 tar-x -f/PATH/TO/SOMEFILE.tar

tar-x-f/PATH/TO/SOMEFILE.tar-C/PATH/

(5) 结合压缩工具实现:归档并压缩

3、-T选项指定输入文件-X选项指定包含要排除的文件列表      

tar zcvf mybackup.tgz-T /root/includefilelist -X /root/excludefilelist

4、分割大的tar文件为多份小文件:      

 split -b Size -d tar-file-name prefix-name      

split -b 1M-d mybackup.tgz mybackup-parts      

split -b 1M mybackup.tgz mybackup-parts

5、合并:      

catmybackup-parts*>mybackup.tar.gz

•实例:

1、打包文件

[root@centos7 ~]#tar -cf data.tar /data

可以看到打包过程

[root@centos7 ~]#tar -cvf data.tar /data

并且可以看到原有属性

[root@centos7 ~]#tar -cpvf data.tar /data

[root@centos7 ~]#du -sh /data/

2.4M   /data/

tar只是打包文件,并不压缩文件

2、压缩时应根据文件类型判断是否适合压缩

[root@centos7 ~]#ll data.tar -h

不要尝试对已经压缩过的文件进行压缩,如:

[root@centos7 ~]#mp4 winrar mp3 rmvb

无压缩效果

3、预览data文件列表

[root@centos7 ~]#tar tvf data.tar

解压缩 (默认解压缩在当前目录下)

[root@centos7 ~]#tar x^c data.tar

使解压缩在mnt目录下(两种方法)

在解压缩时直接指定文件名称

[root@centos7 ~]#tar xvf /root/data.tar

[root@centos7 ~]#cd mnt

或使用-c指定目标解压缩目录

[root@centos7 ~]#tar xvf data.tar  -c /mnt 

4、既打包又压缩

[root@centos7 ~]#tar -zcpvf data.tar.gz  /data

[root@centos7 ~]#tar -zcpvf data.tar.xz  /data

[root@centos7 ~]#tar -zcpvf data.tar.bz2  /data

解压缩:

[root@centos7 ~]#tar xvf data.tar.bz2  -c /mnt

5、个别文件不打包

[root@centos7 ~]#cat  list.txt

/etc/

/boot

[root@centos7 ~]#cat exlist.txt

/etc/shadow

[root@centos7 ~]#tar jcvf list.tar.xz -T list.txt  -x enlist.txt

打包压缩虽然节约了磁盘空间,但是要消耗系统资源—性能

预览文件:

[root@centos7 ~]#tar tvf list.tar.xz |grep shadow

6、切割小文件

查看文件有多大

[root@centos7 ~]#ll list.tar.xz -h

95M

切割命令split

[root@centos7 ~]#split  -b 10M -d list.tar.xz  a.tar

[root@centos7 ~]#ll

or

[root@centos7 ~]#split  -b 10M  list.tar.xz  b.tar

7、 合并文件

[root@centos7 ~]#cat a.tar0* > a.tar.xz

[root@centos7 ~]#ll a.tar.xz list.tr.xz

即可与原文件合并

(二)cpio

1、功能:复制文件从或到归栏

2、cpio 命令是通过重定向的方式将文件进行打包备份,还原恢复的工具,它可以解压以".cpio”或者".tar”结尾的文件

3、cpio[选项]>文件名或者设备名

4、cpio[选项]文件名或者设备名

5、选项      

-0将文件拷贝打包成文件或者将文件输出到设备上

-i解包,将打包文件解压或将设备上的备份还原到系统

-t预览,查着文件内容或者输出到设备上的文件内容

-v显示打包过程中的文件名称。

-d解包生成目录,在cpio还原时,自动的建立目录

-c一种较新的存储方式

•示例:

1、将etc自录备份:      

find:/etc -print | cpio -ov >etc.cpio

2、内容预览      

cpio-tv < etc.cpio

3、解包文件      

cpio -idv < etc.cpio

[root@centos7 ~]#find /etc/syconfig/  |  cpio -ov > sysconfig.cpio

[root@centos7 ~]#file sysconfig.cpio

预览文件内容

[root@centos7 ~]#cpio  -tv < sysconfig.cpio

解开文件

[root@centos7 ~]#Cpio -idv <^Csysconfig.cpio

[root@centos7 ~]#cd /data

解压到绝对路径

[root@centos7 ~]#cpio -idv < /boot/sysconfig/cpio

解压到当前目录下

[root@centos7 ~]#cpio -idv <  /boot/init ramos-3.10.0-693.e17.x86_64.img

打包时带有绝对路径就解压到绝对路径中,如果只有文件名,没有绝对路径,就解到相对路径

(三)回顾整理命令工具

authconfig

alias Unalaska.Ashcroft

bc |

Cut

Clock

cal 9 1752

cd

Change

Chpasswd

Cp -a -r -v -p

cpio

Chfn finger

Chsh shell

Cho d

Chvt 2

clown

Chirp

Chattr

compress uncompress

dd

Df

Diff

dirname

echo

expr

export

enable

env

file

find

fdisk

free

finger

getent passwd |group|shadow|gshadow

groupadd

groupmod

groups

gpasswd

gedit

getfacl

grpck

hash

history

hostname

hexdump

help

head

info

id

init 0 3 5 6

ifconfig

ll

lsattr

ln -s

ls /dev/sda*

lsblk

split

su -

sosreport

shutdown

strace

sort

tar

tee

tty

type

test

tac

tail

timedatetl centos7

unsec

undatedb

uname -r

uask

useradd

usermod

userdel

uniq

vipw

vigr

wc

w

wall

who who am i

whatis

whereis

which

whoami

xz

xzcat

xrags

zcat

zip

 

二、文本处理工具sed

sed 命令不仅可以查看过滤文件,还能修改文件

在特定文件中(bashrc)加入别名,可以使用 sed 工具放到脚本中批量执行

[root@centos7 ~]#reset.sh

(一)处理文本的工具sed

1、Stream EDitor,行编辑器

2、sed 是一种流编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(patternspace),接着用 sed 命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。

然后读入下行,执行下一个循环。如果没有使诸如"D”的特殊命令,那会在两个循环之间清空模式空间,但不会清空保留空间。这样不断重复,直到文件末尾。文件内容并没有改变,除非你使用重定向存储输出。      

3、功能:主要用来自动编辑一个或多个文件,简化对文件的反复操作,编写转换程序等

4、参考:http://www.gnu.org/software/sed/manual/sed.html

 (二)sed工具

1、用法:        

sed[option]...'script' inputfile…

2常用选项:

-n:不输出模式空间内容到屏幕,即不自动打印

-e:多点编辑      

-f:/PATH/SCRIPT_FILE:从指定文件中读取编辑脚本

-r:支持使用扩展正则表达式

-i.bak:备份文件并原处编辑

3、script:

地址命令’

4、地址定界:

 (1)不给地址:对全文进行处理

 (2)单地址:      

 #:指定的行,$:最后一行      

/pattern/:被此处模式所能够匹配到的每一行

支持正则表达式,只有满足pattern定义的行才能处理

若是匹配此模式的行有100行,只有10行符合pattern定义,那就只处理次10行

(3)地址范围:      

 ##           比如10,20

#+#               10,10+10

/pat1//pat2/          

#./pat1/

(4)~:步进      

 1~2奇数行      

2~2偶数行

5、编辑命令:

d:删除模式空间匹配的行,并立即启用下一轮循环

p:打印当前模式空间内容,追加到默认输出之后

a  [\]text:在指定行后面追加文本              

支持使用\n实现多行追加

i  [\]text:在行前面插入文本

c  [\]text:替换行为单行或多行文本

w  /path/somefile:保存模式匹配的行至指定文件

r  /path/somefile:读取指定文件的文本至模式空间中                    

配到的行后

= 为模式空间中的行打印行号

! :  模式空间中匹配行取反处理

示例:

使用sed加上脚本,打印第二行,默认自动打印

[root@centos7 ~]#sed ‘2p’ f1

可以用-n关闭自动打印

简便组合方法:

[root@centos7 ~]#ifconfig ens33 |sed -n ‘2p’

找包含root的行:

单地址打印文件,只显示第二行

[root@centos7 ~]#sed -n ‘2p’ /etc/passwd

最后一行打印

[root@centos7 ~]#sed -n ‘$p’ /etc/passwd

模式打印

[root@centos7 ~]#sed -n ‘//p’ /etc/passwd

默认sed命令使用基本正则表达式,也可以扩展正则表达式:加r选项

显示第二行到第五行:

[root@centos7 ~]#sed ‘2,5p’ /etc/passwd

bin:x:1:1:bin:/bin:/sbin/nologin

daemon:x:2:2:daemon:/sbin:/sbin/nologin

[root@centos7 ~]#cat /etc/passwd less

使用+方式

[root@centos7 ~]#sed -n ‘2,+3p’ /etc/passwd

还支持正则表达式

[root@centos7 ~]#sed -n ‘/^b/,/^f/p’ /etc/passwd

若没有f结尾,则不存在,就会找到最后

[root@centos7 ~]#sed -n ‘/^b/,/^ffff/p’  /etc/passwd

-e多点编辑:操作多次

[root@centos7 ~]#sed -n -e “2p” -e “6p” f1

专门写到一个文件中:

[root@centos7 ~]#sed -n -e “2p” -e “6p” f1^c

[root@centos7 ~]#cat > sedscript.txt

2-2p

[root@centos7 ~]#cat sedscript.txt

2-2p

[root@centos7 ~]#Sed -f  sedscript.txt f1

[root@centos7 ~]#Sed -n -f  sedscript.txt f1

d命令:

[root@centos7 ~]#sed ‘2d’ f1

1

3

4

5

6

7

8

9

10

!表示取反:

[root@centos7 ~]#sed ‘2!d’ f1

2

显示 root 包括 root 的行表示:不包括 root 的行

=命令—加行号:

[root@centos7 ~]#sed -n  ‘/root/=’  /etc/passwd

1

10

相关文章
|
15天前
|
Linux
在Linux中,列出几种常见打包工具并写相应解压缩参数。
在Linux中,列出几种常见打包工具并写相应解压缩参数。
|
15天前
|
Linux Perl
在Linux中,如何使用请用 cut 或者 awk,sed命令取出 linux 中 eth0 的 IP 地址?
在Linux中,如何使用请用 cut 或者 awk,sed命令取出 linux 中 eth0 的 IP 地址?
|
5天前
|
机器学习/深度学习 Linux Perl
Linux文本处理三剑客之sed详解
这篇博客详细讲解了Linux中的文本处理工具sed的使用方法和常用命令。
26 9
Linux文本处理三剑客之sed详解
|
17天前
|
Linux
Linux 系列之 在一个文本中查找指定的数据
文章介绍了在Linux命令行中使用文本搜索功能快速查找指定内容的方法,并提供了按`n`键查找下一个匹配项的技巧。
Linux 系列之 在一个文本中查找指定的数据
|
16天前
|
算法 Linux 数据安全/隐私保护
“Linux压缩大师”:gzip、bzip2、tar与zip
在Linux系统管理中,文件压缩与解压至关重要,能有效减少存储空间占用并加快文件传输。常用工具包括gzip、bzip2、tar和zip。gzip采用Lempel-Ziv算法,压缩率高且速度快,适用于单个文件压缩,扩展名为.gz。bzip2压缩率更高但速度稍慢,同样用于单个文件,扩展名为.bz2。tar主要用于打包文件而不直接压缩,常与gzip或bzip2结合使用实现压缩打包。zip则是一种通用压缩工具,支持多文件压缩及密码保护,兼容性好。这些工具让Linux环境下的文件管理更加高效便捷。
15 1
|
17天前
|
Linux Shell Perl
在Linux中,如何使用sed命令进行文本替换?
在Linux中,如何使用sed命令进行文本替换?
|
25天前
|
安全 Linux 图形学
Linux平台Unity下RTMP|RTSP低延迟播放器技术实现
本文介绍了在国产操作系统及Linux平台上,利用Unity实现RTMP/RTSP直播播放的方法。通过设置原生播放模块的回调函数,可将解码后的YUV数据传递给Unity进行渲染,实现低延迟播放。此外,还提供了播放器启动、参数配置及停止的相关代码示例,并概述了如何在Unity中更新纹理以显示视频帧。随着国产操作系统的发展,此类跨平台直播解决方案的需求日益增长,为开发者提供了灵活高效的开发方式。
|
25天前
|
编解码 算法 Linux
Linux平台下RTSP|RTMP播放器如何跟python交互投递RGB数据供视觉算法分析
在对接Linux平台的RTSP播放模块时,需将播放数据同时提供给Python进行视觉算法分析。技术实现上,可在播放时通过回调函数获取视频帧数据,并以RGB32格式输出。利用`SetVideoFrameCallBackV2`接口设定缩放后的视频帧回调,以满足算法所需的分辨率。回调函数中,每收到一帧数据即保存为bitmap文件。Python端只需读取指定文件夹中的bitmap文件,即可进行视频数据的分析处理。此方案简单有效,但应注意控制输出的bitmap文件数量以避免内存占用过高。
|
23天前
|
存储 Linux Windows
Linux zip命令:压缩文件或目录
我们经常会在 Windows 系统上使用 “.zip”格式压缩文件,其实“.zip”格式文件是 Windows 和 Linux 系统都通用的压缩文件类型,属于几种主流的压缩格式(zip、rar等)之一,是一种相当简单的分别压缩每个文件的存储格式,本节要讲的 zip 命令,类似于 Windows 系统中的 winzip 压缩程序,其基本格式如下: [root@localhost ~]#zip [选项] 压缩包名 源文件或源目录列表 注意,zip 压缩命令需要手工指定压缩之后的压缩包名,注意写清楚扩展名,以便解压缩时使用。 下面给大家举几个例子。 【例 1】zip 命令的基本使用。 [r
35 0
Linux zip命令:压缩文件或目录
|
25天前
|
编解码 Linux 数据安全/隐私保护
Linux平台x86_64|aarch64架构如何实现轻量级RTSP服务
为满足在Linux平台(x86_64与aarch64架构)上实现轻量级RTSP服务的需求,我们开发了一套解决方案。该方案通过调用`start_rtsp_server()`函数启动RTSP服务,并设置端口号及认证信息。支持AAC音频和H.264视频编码,可推送纯音频、纯视频或音视频流。此外,还支持X11屏幕采集、部分V4L2摄像头采集、帧率/GOP/码率调整、摄像头设备选择与预览等功能。对于音频采集,支持alsa-lib和libpulse接口。整体设计旨在提供150-400ms的低延迟体验,适用于多种应用场景。
下一篇
DDNS