数据处理与文件查找,压缩与解压

博客主要介绍了数据处理和文件操作相关内容。数据处理包括检索、排序、去重和重定向,其中数据检索提到常与管道协作的grep命令;文件操作涉及精确和模糊查找等多种文件查找方式,以及tar和zip格式的压缩与解压。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • 数据检索
  • 数据排序
  • 数据去重
  • 重定向

一、数据检索

1、常和管道协作的命令——grep

1.1rep是什么

#grep:
    用于搜索模式参数指定的内容,并将匹配的行输出到屏幕或者重定向文件中,常和管道协作的命令 – grep。

#egrep和fgrep两个命令。
    egrep可以使用扩展的正则表达式
    fgrep没有元字符与普通字符的区别

1.2grep命令语法

#命令语法
grep [OPTIONS] PATTERN [FILE...]
命令选项
-r  递归
-v  反取
-i  忽略大小写
-n  显示行号
-c  计数
-w  匹配一个词
-l  只给出匹配的文件名
-L  列出不匹配的文件名
-o  只列出匹配的内容
-E 支持扩展的正则表达式
-q 在标准输出中不输出任何内容,即静默模式
PATTERN
匹配字符串


example 
#对文件夹的操作
grep -r "root" /etc   递归检索/etc下所有文件中包含root的文件
grep -l -r "root" /etc  列出包含 root字符串的文件名
grep -L -r "root" /etc  列出不包含root字符串的文件名
#对文件的操作
grep "root" /etc/passwd   找出文件中包含字符串root的行
grep -v "root" /etc/passwd 找出文件中不包含字符串root的行
grep -n "root" /etc/passwd  找出文件中包含字符串root的行,并显示行号
grep -c "root" /etc/passwd  统计文件中包含字符串root的行数
grep -w "root" /etc/passwd  匹配的字符串必须是一个完整单词  而不是包含
grep -o "root" /etc/passwd  只显示匹配的内容
grep -q "root" /etc/passwd  只匹配不输出
可以使用$?来监测结果,一般脚本中使用较多
[root@www ~]# grep -q "root" /etc/passwd
[root@www ~]# echo $?
0
[root@www ~]# grep -q "root1" /etc/passwd
[root@www ~]# echo $?

1.3管道

#管道 |
    上一个命令的输出作为下一个命令的输入

#单独受用grep
[root@pdun ~]# touch file1
[root@pdun ~]# vim file1
[root@pdun ~]# grep you file1
thank you 
hou are you 
#管道和grep一起使用
[root@pdun ~]# cat file1 | grep  -w you
thank you 
hou are you 

 

二、数据排序

-n  按数字排序      (如果有2,111 这类情况,按数字大小排,而不是按首数字)
-r  反序排序
-o  结果输出到文件
-t  分隔符  sort -n -t: -k3 /etc/passwd
-k  关键字 (按照指定列来排序)
example:
ps -a -o comm,vsz,rss,pmem |sort -nr -k 3

 

#把进程中占资源最多的前5项找出来
[root@pdun ~]# ps aux > xx      #把进程重定向到xx中

[root@pdun ~]# tail -n +1 xx |sort -nr -k3|head -5
root       8264  0.2  0.0      0     0 ?        S    19:29   0:02 [kworker/0:0]
root       6779  0.2  0.6 300720  6324 ?        Ssl  19:00   0:05 /usr/bin/vmtoolsd
root       1777  0.1  0.0      0     0 ?        S    19:00   0:03 [kworker/u256:2]
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         92  0.0  0.0      0     0 ?        S    19:00   0:00 [kauditd]

tail -n +1 去掉第一行,
-nr按数字排序,倒叙
 K3取第列
练习

 

三、数据去重

uniq
-c  每行出现的次数
-d  仅显示重复行
-u  仅显示不重复行
-i  忽略大小写
-f N  跳过前面N个部分 (空格分开)
-s N  跳过前面N个字符 (一般字符)

 

四、重定向

#> 重定向输入

#>> 重定向追加

#< 重定向输出

#<< 重定向追加输出

 

#linux中使用
0 代表标准输入 stdin
1 代表标准输出 stdout
2 代表标准错误输出  stderr

#把输入输出和重定向混合使用。
2>把标准错误流重定向到文件中。
2>&1或>&把标准错误流与标准输出流结合在一起。
2>>把标准错误追加到文件
2>&1的意思是,“把标准错误传送到标准输出要去的任何位置”。

 

 

 

 

-------文件查找---------

  1. 精确查找
  2. 模糊查找
#find查找方式:
    按文件属性查找
    按文件类型查找
    按文件大小查找
    按时间查找
#语法

    find path -option 动作     #动作在后边解释

 

按文件属性查找

按文件属性查找

-name 按文件名查找,区分大小写

-iname 按文件名查找,不区分大小写

-empty 查找空文件或目录

-maxdepth 查找最大深度 /第一级 /var/tmp/ 就是三级 / var tmp

-mindepth 从哪个深度开始查找 /var 第二级

-perm 文件权限 比如4777

-user 文件或文件夹所有者

-uid 文件或文件夹所有者UID     #可通过vipw查看用户uid,vipw类似vim

-group 文件或文件夹属组

-gid 文件或文件夹数组GID

-nouser 没有所有者的文件或文件夹 比用用户被删了

-nogroup 没有属组的文件或文件夹

-links 文件或文件夹硬链接数量
View Code

按文件类型查找

f 普通文件
d 目录文件
l 符号链接文件
b 块设备 文件
c 字符设备文件
p 管道文件
s 套接字文件
文件类型选项
#example
    find / -type p
    find / -typr d

按文件大小查找

c 字节
k KB
M MB
G GB
find / -size +100M

按时间的查找

#按时间(天)
mtime修改时间
atime 访问时间
ctime 创建时间

#按时间(分钟)
-mmin 修改时间
-amin 访问时间
[root@pdun ~]# find -mtime -1     找出一天内修改过的

[root@pdun ~]# find -mtime +1 -type f     找出一天前修改过的文件

[root@pdun ~]# find -atime +1 -type f       找出一天前访问过的文件
练习

 

动作

-print 打印输出
-ls 详细列出查找文件信息 类似于ls -l
-delete 删除找到的文件
-fls /PATH/file 把查找到的所有文件的长格式信息保存至指定文件中;

-ok COMMAND {} \; 对查找到的每个文件执行由COMMAND表示的命令;每次操作都由用户进行确认;
-exec COMMAND {} \; 对查找到的每个文件执行由COMMAND表示的命令;

 

[root@pdun ~]# find / -name passwd -type l


[root@pdun ~]# find / -name passwd -type l -print     

[root@pdun ~]# find / -name passwd -type l -ls

[root@pdun ~]# find / -name passwd -type l -delete
[root@pdun ~]# 
[root@pdun ~]# find / -name passwd  -fls /etc/file1   
    
                                        #把找到的内容存到指定的/etc/file1文件中
View Code

 

模糊查询

locate模糊匹配
locate:模糊查找命令,查找的是linux系统每天特点时间自动索引备份到系统数据库中的文件。

命令语法:locate [OPTION]… PATTERN…

-i 不区分大小写

#优点:查找文件速度快
locate命令其实是“find -name”的另一种写法,但是要比后者快得多,原因在于它不搜索具体目录,而是搜索一个数据库(/var/lib/locatedb),这个数据库中含有本地所有文件信息。Linux系统自动创建这个数据库,并且每天自动更新一次,所以使用locate命令查不到最新变动过的文件。
#缺点:查找到的结果不是实时结果(必要时,可手动执行updatedb命令索引文件到数据库,但是相当耗时。)
为了避免这种情况,可以在使用locate之前,先使用updatedb命令,手动更新数据库。

 

[root@pdun ~]# echo 'my name is pdun' > file1
[root@pdun ~]# 
[root@pdun ~]# echo 'my name is pdun' >> file2
[root@pdun ~]# 
[root@pdun ~]# diff file1 file2           #diff比较两个文件的不同处
0a1
> hello word



------------------------------------------
[root@pdun ~]# wc file1               #wc统计 ,这里有1行 ,4个单词,16字节
 1  4 16 file1
[root@pdun ~]# 
[root@pdun ~]# wc -l file1
1 file1

[root@pdun ~]# wc -l < file1       
1
练习

 

 

 

压缩与解压

  1. tar包管理
  2. zip包管理
  3. 单文件压缩

tar

#tar 压缩或解压时根据其后面所跟的名令选项决定
#命令语法
    tar 压缩或者解压  gz、bz2、xz格式包
    tar [OPTION...] [FILE]...
#命令选项
    c建立压缩包
    v 显示过程
    x 解压压缩包
    f 必选项 归档文件名
    t  查看压缩包内容
    j 二次压缩使用bz2格式
    z 二次压缩使用gz格式
    J 二次压缩使用xz格式
tar -cvzf etc.tar.gz /etc #把/etc下所有压缩到etc.tar.gz (命名要规范,方便解压)
tar -xvzf etc.tar.gz         #解压

#查看文件大小  du -h etc.tar.gz (文件名)
#查看一个文件夹文件的总和  du -sh /etc(文件名)


tar -cvjf etc.tar.bz2 /etc     #压缩成bz2格式
tar -xvjf etc.tar.bz2          #解压


tar -cvJf etc.tar.xz /etc         #xz格式
tar -xvJf etc.tar.xz 


tar cvd etc.tar -etc           #tar格式
tar xvf etc.tar


#查看压缩包内容,不解压
    tar tf file             #tar tf etc.tar.xz




#比较几种压缩格式压缩包的大小
[root@pdun ~]# du -h etc.tar
28M    etc.tar

[root@pdun ~]# du -h etc.tar.xz
7.0M    etc.tar.xz

[root@pdun ~]# du -h etc.tar.bz2
8.7M    etc.tar.bz2

[root@pdun ~]# du -h rtc.tar.gz
9.8M    rtc.tar.gz
tar几种压缩格式

 

zip格式

#安装压缩与解压命令
yum -y install zip unzip
zip - package and compress (archive) files  压缩文件或文件夹

#压缩
-r 选项指定你想递归地(recursively)包括所有包括在 filesdir 目录中的文件 
zip -r etc.zip /etc

#解压
unzip - list, test and extract compressed files in a ZIP archive  显示、测试、解压ZIP包
-v 显示压缩目录内容,但是不解压               unzip -v etc.zip
-t 检查压缩文件是否正确、完整,但是不解压      unzip -t etc.zip
-l 列出压缩文件内容,但是不解压               unzip -l etc.zip

 

 

压缩文件

[root@pdun ~]# mkdir opt
[root@pdun ~]# 
[root@pdun ~]# cd opt
[root@pdun opt]# 
[root@pdun opt]# ll
total 0
[root@pdun opt]# 
[root@pdun opt]# cp passwd ./

有以上可知,passwd是文件
#bzip2
bzip2 passwd             #压缩passwd文件
bzcat passwd.bz2       #查看压缩文件内容
bunzip2 passwd.bz2      #解压文件


#gzip
gzip passwd           #压缩
zcat passwd            #查看压缩包内容
gunzip passwd         #解压



#zip
zip passwd
unzip passwd
View Code

 

转载于:https://www.cnblogs.com/pdun/p/11057989.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值