8月16号上课笔记

shell特殊符_cut命令

1. 特殊符号:

*    任意个任意字符,

?  任意一个字符

#    注释字符

\    脱义字符

|     管道符

$    变量的前缀

!$   正则里面表示行尾

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

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

&    放在命令后面,将命令放到后台

[]    指定字符中的一个

||    或者,

[root@localhost spilt]# ls 2.txt || wc -l 3.txt              #只要前面一条命令成功执行,那么后面的命令就不执行

2.txt 

[root@localhost spilt]# ls 3.txt || wc -l 2.txt              #如果前面的命令不成功,那么执行后面的命令

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

5398 2.txt

&& 并且

[root@localhost spilt]# ls 3.txt && wc -l 2.txt          #只要前面一条命令执行不成功,那么后面的命令就不执行

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

[root@localhost spilt]# ls 2.txt && wc -l 3.txt         #如果前面的命令成功执行,那么后面的命令才执行

2.txt

wc: 3.txt: 没有那个文件或目录

判断一个目录是否存在,如果不存在就创建,

[root@localhost spilt]# ls

2.txt

[root@localhost spilt]# [ -d linux ] || mkdir linux        #[ -d linux ]判断一个目录是否存在,没有存在linux目录,执行后面命令创建linux目录

[root@localhost spilt]# ls

2.txt  linux

[root@localhost spilt]# [ -d linux ] && mkdir linux    #因为linux目录已经存在,前面的命令执行不成功,后面的命令不执行

mkdir: 无法创建目录"linux": 文件已存在

2. cut   分割, -d指定分隔符 -f指定第几段 -c 指定第几个字符

1. [root@localhost ~]# head -n2 /etc/passwd |cut -d ":" -f 1     #截取第一段

    root

    bin

2. [root@localhost ~]# head -n2 /etc/passwd |cut -d ":" -f 1,2,3   #截取第二段

    root:x:0

    bin:x:1

3. [root@localhost ~]# head -n2 /etc/passwd |cut -d ":" -f 1-5    #截取第一到第五段

    root:x:0:0:root

    bin:x:1:1:bin

4. [root@localhost ~]# head -n2 /etc/passwd |cut -c 3       #指定第三个字符

    o

    n

5. [root@localhost ~]# head -n2 /etc/passwd |cut -c 3-5   #指定第3-5个字符

    ot:

    n:x

二、 sort_wc_uniq命令

1. sort       排序,默认按照ASCII进行排序

[root@localhost ~]# head -n5 /etc/passwd |sort     查看/etc/passwd的前5行并进行排序

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

lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

root:x:0:0:root:/root:/bin/bash

2. sort -n   按照数字进行排序,字母或者特殊符号都会认为是0

[root@localhost ~]# sort -n 1.txt                      #对1.txt按照数字进行排序

bin:x:1:1:bin:/bin:/sbin/nologin

daemon:x:2:2:daemon:/sbin:/sbin/nologin

lp:x:4:7:lp:/var/spool/lpd:/

root:x:0:0:root:/root:/bin/bash

sbin/nologin

#$wsssq

3333dddddffgg

21312adm:x:3:4:adm:/var/adm:/sbin/nologin

23122

3. sort -r   反序进行排序

[root@localhost ~]# sort -nr 1.txt              #反序进行排序,大的数字在前面

23122

21312adm:x:3:4:adm:/var/adm:/sbin/nologin

3333dddddffgg

#$wsssq

sbin/nologin

root:x:0:0:root:/root:/bin/bash

lp:x:4:7:lp:/var/spool/lpd:/

daemon:x:2:2:daemon:/sbin:/sbin/nologin

bin:x:1:1:bin:/bin:/sbin/nologin

4. wc -l 统计行数

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

9 1.txt

5. wc -m  统计字符数,$每一行的换行符也算一个字符

[root@localhost ~]# wc -m 1.txt

217 1.txt

6. wc -w  统计词数,以空白字符作为分隔符号

[root@localhost ~]# wc -w 1.txt

9 1.txt

7.uniq   去重复,但是需要先进行排序

[root@localhost ~]# uniq 33.txt         #单独使用uniq相同的字符相邻才有用,所以要先进行排序

121312

111

2222

333

2222

dddd

333121312

111

2222

333

2222

dddd

333121312

1113331213123

[root@localhost ~]# sort 33.txt|uniq       #先排序再去重

111

1113331213123

121312

2222

333

333121312

dddd

8. uniq -c  统计重复的次数

[root@localhost ~]# sort 33.txt |uniq -c

      2 111

      1 1113331213123

      1 121312

      4 2222

      2 333

      2 333121312

      2 dddd

三、tee_tr_split命令

1. tee    和>的功能类似,重定向还可以将结果打印在屏幕上

   tee -a    和>>功能类似,追加重定向

[root@localhost ~]# sort 33.txt |uniq -c |tee ww.txt           对33.txt进行排序去重,并将结果重定向到ww.txt

      2 111

      1 1113331213123

      1 121312

      4 2222

      2 333

      2 333121312

      2 dddd

2. tr    替换字符

[root@localhost ~]# echo "rainlinux" |tr '[rl]' '[RL]'         #将rl小写替换为大写

RainLinux

[root@localhost ~]# echo "rainlinux" |tr '[a-z]' '[A-Z]'    #将所有的字符替换为大写

RAINLINUX

3. split -b   切割文件,按照大小进行切割

[root@localhost spilt]# split -b 1M rr.txt           #按照1M的大小切割文件rr.txt

[root@localhost spilt]# ls

rr.txt  xaa  xab  xac  xad  xae  xaf  xag  xah

[root@localhost spilt]# split -b 100k 2.txt hh-     #指定切割后文件的前缀名,hh-

[root@localhost spilt]# ls

2.txt  hh-aa  hh-ab  hh-ac

4. split -l     切割文件,按照行数进行切割

[root@localhost spilt]# split -l 1000 2.txt         # 将2.txt没1000行分割为1个文件

[root@localhost spilt]# ls

2.txt  xaa  xab  xac  xad  xae  xaf

[root@localhost spilt]# wc -l *                       #共5398行,分割为6个文件

猜你喜欢

转载自blog.csdn.net/g66kai/article/details/81807282