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


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

    一、数据检索

    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
  • 相关阅读:
    将训练好的Tensorflow模型部署到web应用中
    python pip升级
    python time
    python 队列模拟递归遍历目录(广度遍历)
    python 栈模拟递归遍历目录(深度遍历)
    python 递归遍历目录
    python 队列
    python 栈
    python 递归
    python 语音模块
  • 原文地址:https://www.cnblogs.com/pdun/p/11057989.html
Copyright © 2020-2023  润新知