• 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目录不存在,就会创建目录。

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

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

  • 相关阅读:
    Scss支持多主题切换的方案实现
    一探前端开发中的JS调试技巧
    【基础】CSS居中的15种方式
    代码打开输入法的手写功能
    谷歌使用navigator.mediaDevices.getUserMedia 调用摄像头拍照功能,不兼容IE
    VUE中使用canvas做签名功能,兼容IE
    vue项目放在IE上页面空白的问题
    element-ui中使用el-radio单选切换表格
    vue中使用canvas绘制签名
    简单使用vuex状态管理
  • 原文地址:https://www.cnblogs.com/zhaocundang/p/8277356.html
Copyright © 2020-2023  润新知