zoukankan      html  css  js  c++  java
  • shell特殊符号cut命令 sort_wc_uniq命令 tee_tr_split命令 shell特殊符号

     

    • shell特殊符号cut命令

     

    特殊符号

      *  通配符,任意个任意字符

     ? 任意一个字符

      # 注释字符

        脱义字符

     

    c=$a$b

    echo  $c

     

      | 管道符

     

    cat  1.txt |less

    cat 1.txt |more

     

    cut 截取字符串

    显示头2行

    cat  /etc/passwd  |head -2

    切割":"第一段   cut  -d ":" -f 1

    切割两断:cut  -d ":" -f 1,2

     

    把etc/passwd 下前两行,以冒号切割1到三段

    cat  /etc/passwd  |head -2  |cut  -d  ":" -f   1-3

     

    root@localhost:~# cat  /etc/passwd |head -2 |cut -d ":" -f 1,2

    root:x

    bin:x

    root@localhost:~# cat  /etc/passwd |head -2 |cut -d ":" -f 1-2

    root:x

    bin:x

    root@localhost:~# cat  /etc/passwd |head -2 |cut -d ":" -f 1-3

    root:x:0

    bin:x:1

     

     

    cut  指定第几个字符:

    cut  -c  4

    root@localhost:~# cat /etc/passwd |head -2 |cut -c 4

    t

    :

     

    •  sort_wc_uniq命令  

     

     

    sort 排序   -n 以数字排序  -r 反序

     

     

     

    sort /etc/passwd  按照首字母排序

    取文件内容前10行写到1.txt

    head  /etc/passwd  > 1.txt

    vim 1.txt 编辑,写入几个特殊符号 * 《》 <>?

    sort 1.txt

    默认是特殊符号排在前面,然后是数字,字母先后顺序,*号排在后面

     

     

    sort  -n 1.txt

    会以数字排序,字母和特殊符号会认为是0

     

    sort  -nr 1.txt 反序排序  最大的在前面

     

    sort   -t   -kn1/-kn2 分隔符 指定第几段排序

     

     

    wc  -l 统计行数

    wc  -m 统计字符数

     

    root@localhost:~# wc -l 1.txt 

    19 1.txt

    root@localhost:~# wc -m 1.txt 

    432 1.txt

     

     

    root@localhost:~# vim 2.txt

    输入

    abc

    123

    :wq

    root@localhost:~# wc -m 2.txt 

    8 2.txt

    root@localhost:~# cat -A 2.txt 

    abc$

    123$

     

    每一行都有一个换行符 $

     

    wc   -w  2.txt 统计单词数,是以空白字符区分的

    root@localhost:~# wc  -w 2.txt 

    2 2.txt

     

     

    uniq (unique) 2.txt 去重复

    root@localhost:~# uniq 3.txt 

    1

    222

    333

    4

    56476

    root@localhost:~# cat 3.txt 

    1

    1

    1

    222

    333

    4

    4

    56476

     

    先排序,再统计。

    统计出现重复的次数:

    sort  2.txt |uniq  -c

    root@localhost:~# sort 3.txt |uniq  -c

          3 1

          1 222

          1 333

          2 4

          1 56476

     

     

    •   tee_tr_split命令

     

     

    管道|tee 和>类似,重定向的同时还在屏幕上显示

    作用: 重定向并打印到屏幕上

     

    root@localhost:~# sort 3.txt |uniq -c > a.txt

    root@localhost:~# cat a.txt 

          3 1

          1 222

          1 333

          2 4

          1 56476

     

    root@localhost:~# sort 3.txt |uniq -c |tee b.txt

          3 1

          1 222

          1 333

          2 4

          1 56476

    root@localhost:~# cat b.txt 

          3 1

          1 222

          1 333

          2 4

          1 56476

    root@localhost:~# 

     

     

    ">"  与 “|tee”都可以写入文件

     

     

     

    清空a.txt

    >a.txt

    >>追加 ,|tee -a 也可以追加

    |tee  -a 追加

    root@localhost:~# sort 3.txt |uniq -c |tee -a b.txt 

    tr替换字符,tr ‘a’'b', 大小写替换tr'[a-z]' ‘[A-Z]’

     

    把xb改成大写的XB

    root@localhost:~# echo "xiaobo" |tr '[xb]' '[XB]'

    XiaoBo

     

    单独把x改成X

    root@localhost:~# echo "xiaobo" |tr 'x' 'X'

    Xiaobo

     

    把小写字母改成大写字母

    root@localhost:~# echo "xiaobo" |tr '[a-z]' '[A-Z]'

    XIAOBO

     

    把所有的字母改成1

    root@localhost:~# echo "xiaobo"  |tr '[a-z]' '1'

    111111

     

    当日志文件800G的话,读取困难,可以切割

     

     

    把etc下所有conf文件追加到a.txt文件里去

    root@localhost:~# find  /etc/ -type f  -name "*conf" -exec cat {} >> a.txt ;

    root@localhost:~# du -sh  a.txt 

    1.1M a.txt

    切割文件a.txt ,每个文件100K

     

    root@localhost:~# du -sh a.txt 

    464K a.txt

    root@localhost:~# split -b 100k a.txt 

    root@localhost:~# ls

    a.txt  xaa  xab  xac  xad  xae

    指定文件名前缀

    root@localhost:~# rm -f x*

    root@localhost:~# split -b 100K a.txt abc

    root@localhost:~# ls

    abcaa  abcab  abcac  abcad  abcae  a.txt

     

    切割每1000行一个文件

    root@localhost:~# split -l 1000 a.txt 

    root@localhost:~# ls

    a.txt  xaa  xab  xac  xad  xae  xaf  xag  xah  xai  xaj  xak  xal  xam

    root@localhost:~# wc -l a.txt 

    12764 a.txt

     

    •  shell特殊符号

    $ 变量前缀,!$组合,正则里面表示行尾

    ; 多条命令写到一行,用分号分割

    ~用户家目录,后面正则表达式表示匹配符

    &放到命令后面,会把命令丢到后台

     

    写入重定向> , 追加重定向>>           &>(错误重定向和正确 重定向输出)

    [] 指定字符中的一个,[0-9],[a-zA-Z],[ABC]

    || 和 &&,用于命令之间

     

    [root@localhost ~]# for i in `seq 1 10`

    > do

    > echo $i

    > done

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

     

     

    多条命令用分号分割

    [root@localhost ~]# for i in `seq 1 10`;do echo $i ; done; 

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

     

     

     

    || 表示或,如果前面的命令执行成功,后面的命令不执行;如果前面的命令执行不成功,继续执行后面的命令

    [root@localhost ~]# ls la.txt||wc -l 1.txt 

    ls: 无法访问la.txt: 没有那个文件或目录

    0 1.txt

     

     

    [root@localhost ~]# wc -l 1.txt ||ls la.txt

    0 1.txt

     

     

    && 如果前面的命令成功,就会执行后面的命令;如果前面的命令执行失败,就不会执行后面的命令。

    有假就不会执行后面的。

    [root@localhost ~]# ls la.txt  && wc -l 1.txt 

    ls: 无法访问la.txt: 没有那个文件或目录

     

    [root@localhost ~]# wc -l 1.txt  && ls la.txt

    0 1.txt

    ls: 无法访问la.txt: 没有那个文件或目录

     

     

    判断目录是否存在

    [-d xiaobo]  || mkdir xiaobo

     

    如果xiaobo目录不存在,就会创建目录。

    如果目录存在,就不会创建目录。

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

  • 相关阅读:
    5-python基础—获取某个目录下的文件列表(适用于任何系统)
    Automated, Self-Service Provisioning of VMs Using HyperForm (Part 1) (使用HyperForm自动配置虚拟机(第1部分)
    CloudStack Support in Apache libcloud(Apache libcloud中对CloudStack支持)
    Deploying MicroProfile-Based Java Apps to Bluemix(将基于MicroProfile的Java应用程序部署到Bluemix)
    Adding Persistent Storage to Red Hat CDK Kit 3.0 (在Red Hat CDK Kit 3.0添加永久性存储)
    Carve Your Laptop Into VMs Using Vagrant(使用Vagran把您笔记本电脑刻录成虚拟机)
    使用Python生成一张用于登陆验证的字符图片
    Jupyter notebook的安装方法
    Ubuntu16.04使用Anaconda5搭建TensorFlow使用环境 图文详细教程
    不同时区的换算
  • 原文地址:https://www.cnblogs.com/zhaocundang/p/8277356.html
Copyright © 2011-2022 走看看