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

相关文章
|
2月前
|
Shell Linux
Linux shell编程学习笔记30:打造彩色的选项菜单
Linux shell编程学习笔记30:打造彩色的选项菜单
|
22天前
|
前端开发 Unix Linux
揭秘 Electron 的 Linux 打包过程:你知道背后发生了什么吗?
本文详细介绍了 `electron-builder` 在 Linux 平台上如何打包 Electron 应用程序,涵盖了 AppImage、Flatpak、Snap 等多种格式的打包原理和具体实现。文章从初始化 `LinuxPackager` 到创建各种目标格式的包,详细解析了每个步骤的代码逻辑和关键方法,帮助开发者更好地理解和使用 `electron-builder` 进行 Linux 应用的打包。
54 2
揭秘 Electron 的 Linux 打包过程:你知道背后发生了什么吗?
|
6天前
|
Linux 开发工具
linux文本管理命令
本文档介绍了Linux系统中常用的文本处理命令,包括`echo`、`cat`、`head`、`tail`、`wc`、`less`、`grep`以及重定向符号的使用方法和练习题。此外,还详细讲解了VIM编辑器的特点、工作模式、常用快捷键和高级技巧,帮助用户高效地进行文本编辑和处理。
23 4
|
29天前
|
并行计算 Ubuntu Linux
Ubuntu学习笔记(三):Linux下操作指令大全
Ubuntu学习笔记,介绍了Linux操作系统中常用的命令和操作,如文件管理、系统信息查看、软件安装等。
44 3
|
1月前
|
Ubuntu Linux
Linux的基础用法
Linux的基础用法
20 6
|
2月前
|
Shell Linux
Linux shell编程学习笔记82:w命令——一览无余
Linux shell编程学习笔记82:w命令——一览无余
|
2月前
|
Linux Perl
Linux之sed命令
Linux之sed命令
|
2月前
|
Linux Shell
10-10|linux命令查询 关键字在文本中出现的行数
10-10|linux命令查询 关键字在文本中出现的行数
|
2月前
|
人工智能 监控 Shell
常用的 55 个 Linux Shell 脚本(包括基础案例、文件操作、实用工具、图形化、sed、gawk)
这篇文章提供了55个常用的Linux Shell脚本实例,涵盖基础案例、文件操作、实用工具、图形化界面及sed、gawk的使用。
317 2
|
2月前
|
监控 Linux
Linux系统中du命令与df命令的区别与用法
总的来说,`du` 和 `df` 在磁盘管理中互补使用,能够提供全面的磁盘空间使用信息,帮助用户和管理员有效地监控和管理系统资源。
67 3
下一篇
无影云桌面