• Linux基础二


    一、通配符

    //文件名通配 globbing
        *       //匹配任意长度的任意字符
        ?       //匹配任意单个字符
        []      //匹配指定范围内的任意单个字符
               //转义字符
            [abc],[a-m],[0-9]
            [[:space:]]    //表示空白字符
            [[:punct:]]    //表示标点符号
            [[:lower:]]    //表示小写字母
            [[:upper:]]    //表示大写字母
            [[:alpha:]]    //表示大小写字母
            [[:digit:]]    //表示数字
            [[:alnum:]]    //表示数字和大小写字母
            
        使用man 7 glob命令可以获得以上字符集合的帮助信息!!!
        
        [^]     //匹配指定范围之外的任意单个字符
    

    二、文件压缩、解压缩

    1. 注释

    .gz     .bz2     .xz     .zip     .tar.gz
    
    Linux系统中没有扩展名的概念,只有文件名后缀(说明,注释一个文件的性质,但与文件类型无关)
    

    2. zip/unzip

    zip/unzip
    zip (选项) (参数)
        -r:递归处理,将指定目录下的所有文件和子目录一并处理
        -m:将文件压缩并加入压缩文件后,删除原始文件,即把文件移到压缩文件中;
        -q:不显示指令执行过程
        -v:显示指令执行过程
        -g: 向压缩包中追加指定文件
    
    unzip (选项) (参数)
        -q:执行时不显示任何信息
        -d:指定文件解压缩后所要存放的目录
        -x:指定不要处理.zip压缩文件中的哪些文件
        -n:解压缩时不要覆盖原有的文件
        -l: 不解压显示压缩包内的文件列表
    
    特点:
      1、能压缩文件;2、也能压缩目录
    

    3. gzip/gunzip

    gzip/gunzip
    gzip (选项) (参数)
        -d: 解压缩,相当于gunzip
        -r: 递归压缩目录中每个文件
        -v:显示指令执行过程
    
    gunzip (选项) (参数)
        -r:递归处理,将指定目录下的所有文件及子目录一并处理
        -v:显示指令执行过程
        -c:把解压后的文件输出到标准输出设备,而不改变原文件
    
    zcat:不解压缩的前提下查看文本文件内容
    
    特点:
    	1、能对文件和目录操作
    	2、对目录操作时,仅对目录中的每个文件实现压缩,而并非压缩目录本身
    

    4. bzip2/bunzip2

    bzip2/bunzip2
    bzip2 (选项) (参数)
        -d:执行解压缩,相当于bunzip2
        -k: 保留原文件
        -v:压缩或解压缩文件时,显示详细的信息
    
    bunzip2 (选项) (参数)
        -k:在解压缩后,预设会删除原来的压缩文件。若要保留压缩文件,请使用此参数
        -v:解压缩文件时,显示详细的信息
    
    bzcat:不解压缩的前提下查看文本文件内容
    
    特点:
        1、保存原文件不被压缩后删除
        2、同等压缩比例时,压缩率更高,文件更小。
        3、只能针对文件操作!!!
    

    5. xz/unxz

    xz/unxz
    xz (选项) (参数)
        -k: keep, 保留原文件
        -d:解压缩,相当于unxz
    
    unxz (选项) (参数)
        -k: keep, 保留原文件
        -d:解压缩,相当于unxz
        
    xzcat: 不解压缩的前提下查看文本文件内容
    
    特点:
        1、只能针对文件操作!!!
    

    三、归档、展开归档

    1. tar

    tar
    tar (选项) (参数)
        -c: 创建归档(创建压缩文件)
        -x: 展开归档(解压)
        -v: 显示过程
        -f: 指定归档文件
    
        -tvf: 不显式展开的前提下查看归档
        -r: 往归档文件中追加
        -C: 解压到指定目录,其目录必须事先存在
    
        -z: 调用gzip压缩归档或解压展开
        -j: 调用bzip2压缩归档或解压展开
        -J: 调用xz压缩归档或解压展开
    
        -zcf :创建一个gz格式的文件压缩包
        -jcf :创建一个bz2格式的文件压缩包
        -Jcf :创建一个xz格式的文件压缩包
    
        -zxf :解压一个gz格式的文件压缩包
        -jxf :解压一个bz2格式的文件压缩包
        -Jxf :解压一个xz格式的文件压缩包
    

    2. 创建归档示例

    创建归档
        tar -jcf /PATH/TO/SOMEFILE.tar.bz2 FILE...
       
    展开归档
        tar -zxf /PATH/TO/SOMEFILE.tar.gz
    
    展开至指定目录
        tar -Jxf /PATH/TO/SOMEFILE.tar.xz -C /PATH/TO/DIR
    
    查看归档文件中的文件列表
        tar -tvf /PATH/TO/SOMEFILE.tar
    

    四、文本去重与排序

    1. sort

    sort常用选项
    sort (选项) (参数) (文件名)
        -n:依照数值的大小排序
        -r:以相反的顺序来排序;
        -t<分隔字符>:指定排序时所用的栏位分隔字符
        -c:检查文件是否已经按照顺序排序
    

    2. uniq

    cut常用选项
    cut (选项) (参数) (文件名)
        -d:指定字段的分隔符,默认的字段分隔符为“TAB”
        -f:显示指定字段的内容(要显示的列)
        -b:仅显示行中指定直接范围的内容
    

    3. column ——表格化输出,方便查看

    column常用选项
          -t      :易以表格的形式输出
          -s      :将什么作为分隔的标准
    

    五、文本处理三剑客

    1. awk

    • awk介绍
      awk是一种编程语言,用于在linux/unix下对文本和数据进行处理。数据可以来自标准输入(stdin)、一个或多个文件,或其它命令的输出。它支持用户自定义函数和动态正则表达式等先进功能,是linux/unix下的一个强大编程工具

    • awk命令格式和选项

    F fs   fs指定输入分隔符,fs可以是字符串或正则表达式,如-F:
    v var=value   赋值一个用户定义变量,将外部变量传递给awk
    f scripfile  从脚本文件中读取awk命令
    
    • awk脚本基本结构
    awk 'BEGIN{ print "start" } pattern{ commands } END{ print "end" }' file
    示例
        awk -F分隔符 '{print $需要打印的列}' 文件名(-F可以不指定分隔符,默认的分隔符是空格,不管有多少个空格,只算一个空格)
    
    awk 'BEGIN{ i=0 } { i++ } END{ print i }' filename
    awk "BEGIN{ i=0 } { i++ } END{ print i }" filename
    
    • awk的工作原理
    awk 'BEGIN{ commands } pattern{ commands } END{ commands }'
    
    第一步:执行BEGIN{ commands }语句块中的语句;
    第二步:从文件或标准输入(stdin)读取一行,然后执行pattern{ commands }语句块,它逐行扫描文件,从第一行到最后一行重复这个过程,直到文件全部被读取完毕。
    第三步:当读至输入流末尾时,执行END{ commands }语句块。
    
    解释
    BEGIN语句块在awk开始从输入流中读取行之前被执行,这是一个可选的语句块,比如变量初始化、打印输出表格的表头等语句通常可以写在BEGIN语句块中。
    
    END语句块在awk从输入流中读取完所有的行之后即被执行,比如打印所有行的分析结果这类信息汇总都是在END语句块中完成,它也是一个可选语句块。
    
    pattern语句块中的通用命令是最重要的部分,它也是可选的。如果没有提供pattern语句块,则默认执行{ print },即打印每一个读取到的行,awk读取的每一行都会执行该语句块。
    
    • awk内置变量(预定义变量)
    $n 当前记录的第n个字段,比如n为1表示第一个字段,n为2表示第二个字段。 
    $0 这个变量包含执行过程中当前行的文本内容。
    [N] ARGC 命令行参数的数目。
    [G] ARGIND 命令行中当前文件的位置(从0开始算)。
    [N] ARGV 包含命令行参数的数组。
    [G] CONVFMT 数字转换格式(默认值为%.6g)。
    [P] ENVIRON 环境变量关联数组。
    [N] ERRNO 最后一个系统错误的描述。
    [G] FIELDWIDTHS 字段宽度列表(用空格键分隔)。
    [A] FILENAME 当前输入文件的名。
    [P] FNR 同NR,但相对于当前文件。
    [A] FS 字段分隔符(默认是任何空格)。
    [G] IGNORECASE 如果为真,则进行忽略大小写的匹配。
    [A] NF 表示字段数,在执行过程中对应于当前的字段数。
    [A] NR 表示记录数,在执行过程中对应于当前的行号。
    [A] OFMT 数字的输出格式(默认值是%.6g)。
    [A] OFS 输出字段分隔符(默认值是一个空格)。
    [A] ORS 输出记录分隔符(默认值是一个换行符)。
    [A] RS 记录分隔符(默认是一个换行符)。
    [N] RSTART 由match函数所匹配的字符串的第一个位置。
    [N] RLENGTH 由match函数所匹配的字符串的长度。
    [N] SUBSEP 数组下标分隔符(默认值是34)。
    
    示例:
    [root@localhost ~]# df -h
    文件系统               容量  已用  可用 已用% 挂载点
    devtmpfs               966M     0  966M    0% /dev
    tmpfs                  983M     0  983M    0% /dev/shm
    tmpfs                  983M  8.7M  974M    1% /run
    tmpfs                  983M     0  983M    0% /sys/fs/cgroup
    /dev/mapper/rhel-root   50G  2.0G   49G    4% /
    /dev/mapper/rhel-home   67G  511M   67G    1% /home
    /dev/nvme0n1p1        1014M  156M  859M   16% /boot
    tmpfs                  197M     0  197M    0% /run/user/0
    /dev/sr0               7.4G  7.4G     0  100% /mnt
    [root@localhost ~]# df -h | awk 'NR==2{print $2}'
    966M
     //NR==number;NR参数代表的是第几行
    
    [root@localhost ~]# df -h | awk 'NR==4{print NF}'
    6
    [root@localhost ~]# df -h | awk 'NR==5{print $NF}'
    /sys/fs/cgroup
     //NF代表是最后一列,是一个数字
    
    [root@localhost ~]# df -h | awk 'NR==4{print $(NF-3)}'
    8.7M
    
    • awk运算与判断
    运算符	描述
    + -	加,减
    * / &	乘,除与求余
    + - !	一元加,减和逻辑非
    ^ ***	求幂
    ++ --	增加或减少,作为前缀或后缀
    
    例:
    
    awk 'BEGIN{a="b";print a++,++a;}'
    0 2
    

    2. sed

    • sed介绍
      sed是一种流编辑器,它是文本处理中非常中的工具,能够完美的配合正则表达式使用

    • 命令格式
      sed [options] 'command' file

    • 选项

    sed —— 处理行的内容
        命令
            s 替换指定字符   (替换)
            c 把选定的行改为新的文本 (修改)
            a 在当前行下面插入文本 (追加)
            d 删除,删除选择的行    
            
         g 表示行内全面替换
            -r 使用拓展正则表达式
             
    拓展
        sed -i 's/字符串/替换的字符串/g' 文件名	
    	sed '数字1s(c/a)/字符串/替换的字符串/g' 文件名
    	sed '数字s(c/a)/子符串/替换的字符串/数字' 文件名
    		(前一个数字代表第几行,后面一个数字代表第几个字符串)
    

     

    • 示例
    [root@localhost ~]# cat test 
    root:x:0:0:root:/root:/bin/bash
    bin:x:1:1:bin:/bin:/sbin/nologin
    daemon:x:2:2:daemon:/sbin:/sbin/nologin
    
    [root@localhost ~]# sed '1s/root/toor/g' test 
    toor:x:0:0:toor:/toor:/bin/bash
    bin:x:1:1:bin:/bin:/sbin/nologin
    daemon:x:2:2:daemon:/sbin:/sbin/nologin
    
    [root@localhost ~]# sed '1s/root/toor/1' test 
    toor:x:0:0:root:/root:/bin/bash
    bin:x:1:1:bin:/bin:/sbin/nologin
    daemon:x:2:2:daemon:/sbin:/sbin/nologin
    
    [root@localhost ~]# sed '1s/root/toor/3' test 
    root:x:0:0:root:/toor:/bin/bash
    bin:x:1:1:bin:/bin:/sbin/nologin
    daemon:x:2:2:daemon:/sbin:/sbin/nologin
    
    [root@localhost ~]# sed -i 's/root/toor/g' test 
    [root@localhost ~]# cat test 
    toor:x:0:0:toor:/toor:/bin/bash
    bin:x:1:1:bin:/bin:/sbin/nologin
    daemon:x:2:2:daemon:/sbin:/sbin/nologin
    
    [root@localhost ~]# sed '1awangqiang' test 
    toor:x:0:0:toor:/toor:/bin/bash
    wangqiang
    bin:x:1:1:bin:/bin:/sbin/nologin
    daemon:x:2:2:daemon:/sbin:/sbin/nologin
    
    [root@localhost ~]# sed '1a   wangqiang' test 
    toor:x:0:0:toor:/toor:/bin/bash
       wangqiang
    bin:x:1:1:bin:/bin:/sbin/nologin
    daemon:x:2:2:daemon:/sbin:/sbin/nologin
    

    3. grep

    • grep介绍
      grep是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来

    • grep命令格式

    grep command file_name
    或者
    grep file_name3、grep常用选项
    
    • grep常用选项
    -v   //反转查找
    -E   //将范本样式为延伸的普通表示法来使用,意味着使用能使用扩展正则表达式
    -l   //列出文件内容符合指定的范本样式的文件名称
    -L   //列出文件内容不符合指定的范本样式的文件名称
    f<范本文件>   //指定范本文件,其内容有一个或多个范本样式,让grep查找符合范本条件的文件内容,格式为每一列的范本样式
    
    • 示例
    [root@localhost ~]# netstat -tunlp
    Active Internet connections (only servers)
    Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
    tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1083/sshd           
    tcp6       0      0 :::22                   :::*                    LISTEN      1083/sshd           
    udp        0      0 0.0.0.0:68              0.0.0.0:*                           1588/dhclient       
    [root@localhost ~]# netstat -tunlp | grep 22
    tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1083/sshd           
    tcp6       0      0 :::22                   :::*                    LISTEN      1083/sshd   
    
  • 相关阅读:
    电子科技大学实验中学PK赛(二)比赛题解
    伊苏比的梦幻之旅(三)比赛题解
    电子科技大学实验中学PK赛(一)比赛题解
    伊苏比的梦幻之旅(二)比赛题解
    伊苏比的梦幻之旅(一)比赛题解
    The Solution of UESTC 2016 Summer Training #1 Div.2 Problem C
    The Solution of UESTC 2016 Summer Training #1 Div.2 Problem B
    c++11 多线程间共享数据 <c++ concurrency in action>
    c++11 多线程 2<<c++ concurrency in action>>
    c++11 多线程 1<<c++ concurrency in action>>
  • 原文地址:https://www.cnblogs.com/itwangqiang/p/13793319.html
Copyright © 2020-2023  润新知