zoukankan      html  css  js  c++  java
  • 和管道符有关的命令

    和管道符有关的命令

    cut命令

    用来截取某一个字段

    语法:cut -d ‘分隔字符’ [-cf] n(这里的n是数字)

    • -d:后面跟分隔字符,分隔字符要用单引号括起来
    • -c:后面接的是第几个字符
    • -f:后面接的是第几个字段(区块)
    [root@centos-01 ~]# cat /etc/passwd |head -2 |cut -d ":" -f 1,2
    root:x
    bin:x
    [root@centos-01 ~]# cat /etc/passwd |head -2 |cut -c 1-4
    root
    bin:

    sort命令

    sort用做排序。如果sort不加任何选项,则从首字符向后,依次按ASCII码值进行比较,最后按升序输出。

    语法:sort [-t 分隔符] [-kn1,n2] [-nru](这里的n1 < n2)

    • -t 分隔符:作用跟cut的-d一个意思
    • -n:使用纯数字排序
    • -r:反向排序
    • -u:去重复
    • -kn1,n2:由n1区间排序到n2区间,可以只写-kn1,即对n1字段排序
    [root@centos-01 ~]# sort /etc/passwd
    adm:x:3:4:adm:/var/adm:/sbin/nologin
    bin:x:1:1:bin:/bin:/sbin/nologin
    chrony:x:998:996::/var/lib/chrony:/sbin/nologin
    daemon:x:2:2:daemon:/sbin:/sbin/nologin
    dbus:x:81:81:System message bus:/:/sbin/nologin
    ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
    games:x:12:100:games:/usr/games:/sbin/nologin
    halt:x:7:0:halt:/sbin:/sbin/halt
    lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
    mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
    nobody:x:99:99:Nobody:/:/sbin/nologin
    operator:x:11:0:operator:/root:/sbin/nologin
    polkitd:x:999:997:User for polkitd:/:/sbin/nologin
    postfix:x:89:89::/var/spool/postfix:/sbin/nologin
    root:x:0:0:root:/root:/bin/bash
    shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
    sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
    sync:x:5:0:sync:/sbin:/bin/sync
    systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
    [root@centos-01 ~]# head /etc/passwd > 1.txt
    [root@centos-01 ~]# sort 1.txt 
    adm:x:3:4:adm:/var/adm:/sbin/nologin
    bin:x:1:1:bin:/bin:/sbin/nologin
    daemon:x:2:2:daemon:/sbin:/sbin/nologin
    halt:x:7:0:halt:/sbin:/sbin/halt
    lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
    mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
    operator:x:11:0:operator:/root:/sbin/nologin
    root:x:0:0:root:/root:/bin/bash
    shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
    sync:x:5:0:sync:/sbin:/bin/sync
    [root@centos-01 ~]# sort -r 1.txt 
    sync:x:5:0:sync:/sbin:/bin/sync
    shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
    root:x:0:0:root:/root:/bin/bash
    operator:x:11:0:operator:/root:/sbin/nologin
    mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
    lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
    halt:x:7:0:halt:/sbin:/sbin/halt
    daemon:x:2:2:daemon:/sbin:/sbin/nologin
    bin:x:1:1:bin:/bin:/sbin/nologin
    adm:x:3:4:adm:/var/adm:/sbin/nologin

    wc命令

    用于统计文档的行数、字符数、词数,常用的选项为:

    • -l:统计行数
    • -m:统计字符数
    • -w:统计词数
    • wc不跟任何选项,直接跟文档,则会把行数、词数、字符数依次输出。
    [root@centos-01 ~]# wc -l 1.txt 
    10 1.txt
    [root@centos-01 ~]# wc -m 1.txt 
    385 1.txt
    [root@centos-01 ~]# ls
    1.txt  anaconda-ks.cfg
    [root@centos-01 ~]# vim 2.txt
    [root@centos-01 ~]# wc -m 2.txt 
    10 2.txt
    [root@centos-01 ~]# cat -A 2.txt 
    abcd$
    ,;.?$

    每行末尾的隐藏字符$也算在字符统计中。

    [root@centos-01 ~]# wc -w 2.txt 
    2 2.txt

    uniq命令

    去重复的行,使用uniq的前提是需要先给文件排序,否则不是相邻的两行无法去重。

    • -c:统计重复的行数,并把行数写在前面。
    [root@centos-01 ~]# vim 2.txt 
    [root@centos-01 ~]# cat 2.txt 
    abcd
    ,;.?
    abcd
    abcd
    [root@centos-01 ~]# uniq 2.txt 
    abcd
    ,;.?
    abcd
    [root@centos-01 ~]# sort 2.txt 
    ,;.?
    abcd
    abcd
    abcd
    [root@centos-01 ~]# sort 2.txt |uniq
    ,;.?
    abcd
    [root@centos-01 ~]# sort 2.txt |uniq -c
          1 ,;.?
          3 abcd
    

    tee命令

    后跟文件名,类似于重定向“>”,但是比重定向多了一个功能,在把文件写入后面所跟的文件中的同时,还显示在屏幕上。

    • -a:追加重定向,类似于“>>”。不加“-a”选项,是覆盖重定向,类似于“>”。
    [root@centos-01 ~]# ls
    1.txt  2.txt  anaconda-ks.cfg
    [root@centos-01 ~]# sort 2.txt |uniq -c
          1 ,;.?
          3 abcd
    [root@centos-01 ~]# sort 2.txt |uniq -c > a.txt
    [root@centos-01 ~]# cat a.txt 
          1 ,;.?
          3 abcd
    [root@centos-01 ~]# sort 2.txt |uniq -c |tee a.txt
          1 ,;.?
          3 abcd
    [root@centos-01 ~]# cat a.txt 
          1 ,;.?
          3 abcd
    [root@centos-01 ~]# sort 2.txt |uniq -c |tee -a a.txt
          1 ,;.?
          3 abcd
    [root@centos-01 ~]# cat a.txt 
          1 ,;.?
          3 abcd
          1 ,;.?
          3 abcd
    

    tr命令

    替换字符,常用来处理文档中出现的特殊符号,如DOS文档中出现的^M符号。常用的选项有两个:

    • -d:删除某个字符,-d后面跟要删除的字符
    • -s:把重复的字符去掉

    最常用的就是把小写变大写:tr '[a-z]' '[A-Z]'

    [root@centos-01 ~]# echo "centos" |tr '[cos]' '[COS]'
    CentOS
    [root@centos-01 ~]# echo "sdut" |tr '[a-z]' '[A-Z]'
    SDUT

    替换、删除、去重复都是针对一个字符来讲的,有一定局限性。

    split命令

    切割文档,常用选项:

    • -b:依据大小来分割文档,单位为byte
    • -l:依据行数来分割文档
    [root@centos-01 ~]# cat a.txt 
          1 ,;.?
          3 abcd
          1 ,;.?
          3 abcd
    [root@centos-01 ~]# 
    [root@centos-01 ~]# 
    [root@centos-01 ~]# find /etc/ -type f -name "*conf" -exec cat {} >> a.txt ;
    [root@centos-01 ~]# du -sh a.txt 
    240K    a.txt
    [root@centos-01 ~]# mkdir test
    [root@centos-01 ~]# mv a.txt test/
    [root@centos-01 ~]# cd test/
    [root@centos-01 test]# ls
    a.  txt
    [root@centos-01 test]# split -b 10000 a.txt 
    [root@centos-01 test]# ls
    a.txt  xab  xad  xaf  xah  xaj  xal  xan  xap  xar  xat  xav  xax
    xaa    xac  xae  xag  xai  xak  xam  xao  xaq  xas  xau  xaw  xay
    [root@centos-01 test]# du -sb *
    243445  a.txt
    10000   xaa
    10000   xab
    10000   xac
    10000   xad
    10000   xae
    10000   xaf
    10000   xag
    10000   xah
    10000   xai
    10000   xaj
    10000   xak
    10000   xal
    10000   xam
    10000   xan
    10000   xao
    10000   xap
    10000   xaq
    10000   xar
    10000   xas
    10000   xat
    10000   xau
    10000   xav
    10000   xaw
    10000   xax
    3445    xay
    

    如果split不指定目标文件名,则会以xaa xab…这样的文件名来存取切割后的文件。

    [root@centos-01 test]# rm -f x*
    [root@centos-01 test]# ls
    a.txt
    [root@centos-01 test]# split -b 100k a.txt 
    [root@centos-01 test]# ls
    a.txt  xaa  xab  xac
    [root@centos-01 test]# du -sh *
    240K    a.txt
    100K    xaa
    100K    xab
    40K xac
    [root@centos-01 test]# rm -f x*
    [root@centos-01 test]# split -b 100k a.txt tmp.
    [root@centos-01 test]# ls
    a.txt  tmp.aa  tmp.ab  tmp.ac
    [root@centos-01 test]# rm -f tmp*
    [root@centos-01 test]# split -l 2000 a.txt 
    [root@centos-01 test]# ls
    a.txt  xaa  xab  xac  xad
    [root@centos-01 test]# wc -l *
      6085 a.txt
      2000 xaa
      2000 xab
      2000 xac
        85 xad
     12170 总用量
    
  • 相关阅读:
    边推改革边上“保险” 央行“双降”两大亮点带来哪些变化
    今天走势将冲高回落后重新回归下跌周期
    小心!资本正在流出中国:国际收支表里被遗漏的-2547亿美元
    价格改革确立时间表和路线图 六大重点领域破题
    避免在办公室体重上升的三大良策
    别再说自己有多忙
    沪指可能展开一波3个交易日的调整
    专车新政博弈 垄断行业改革样本
    JS和CS互访【后台前台代码调用JavaScript变量以及JavaScript调用代码变量】
    net9:图片文件转换成二进制流存入SQL数据库,以及从数据库中读取二进制流输出文件
  • 原文地址:https://www.cnblogs.com/Genesis2018/p/9079765.html
Copyright © 2011-2022 走看看