shell特殊符_cut命令、sort_wc_uniq命令、tee_tr_split

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sj349781478/article/details/82896227

一、shell特殊符

*    任意个任意字符

?  任意一个字符

#    注释字符

\    脱义字符

|     管道符

$    变量的前缀

!$   正则里面表示行尾

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

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

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

[]    指定字符中的一个

||    或者

[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": 文件已存在

二、. 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

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   /etc/passwd                   #按照数字进行排序

adm:x:3:4:adm:/var/adm:/sbin/nologin
avahi-autoipd:x:170:170:Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/sbin/nologin
bin:x:1:1:bin:/bin:/sbin/nologin

3. sort -r   反序进行排序

[root@localhost ~]# sort -nr /etc/passwd             #反序进行排序,大的数字在前面

tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
systemd-network:x:998:996:systemd Network Management:/:/sbin/nologin

四、 wc

wc -l 统计行数

[root@localhost ~]# wc -l  /etc/passwd

25 /etc/passwd

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

[root@localhost ~]# wc -m /etc/passwd

1185 /etc/passwd

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

[root@localhost ~]# wc -w /etc/passwd

48 /etc/passwd

五、uniq  

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

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

[root@localhost ~]# sort  /etc/paswd|uniq       #先排序再去重

 uniq -c  统计重复的次数

[root@localhost ~]# sort  /etc/passwd  |uniq -c

六、tee

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

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

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

七、 tr    替换字符

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

RainLinux

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

RAINLINUX

八、split

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

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

猜你喜欢

转载自blog.csdn.net/sj349781478/article/details/82896227