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个文件