shell特殊符号、cut、sort、uniq、tee、tr、split

通配符

  1. 通配符:*

将与零个或多个字符匹配。这就是说“什么都可以”。例子:

  • /etc/g* 与 /etc 中以 g 开头的所有文件匹配。
  • /tmp/my*1 与 /tmp 中以 my 开头,并且以 1 结尾的所有文件匹配。
  1. 通配符:?

? 与任何单个字符匹配。例子:

  • myfile? 与文件名为 myfile 后跟单个字符的任何文件匹配。
  • /tmp/notes?txt 将与 /tmp/notes.txt 和 /tmp/notes_txt 都匹配,如果它们存在。

注释符号‘#’

注释

  • 在shell文件的行首,作为include标记:#!/bin/bash。
  • 在其他地方使用,作为注释,#后面的内容不会执行。

脱义字符 \

\ 符号使其后面的字符只是作为字符自身,不会体现该字符的意义

[root@localhost ~]# a=123;b=456
[root@localhost ~]# c=$a$b
[root@localhost ~]# echo $c
123456
[root@localhost ~]# c=\$a\$b
[root@localhost ~]# echo $c
$a$b

管道符及cut

管道“| ”就是将前面命令输出作为管道后面命令的输入 而cut是截取字符串。cut 分割,-d 分隔符 -f 指定第几段 -c 指定第几个字符

[root@localhost tmp]# cat 2.txt |cut -d ":" -f 1
root
bin
daemon
adm
[root@localhost tmp]# cat 2.txt |cut -d ":" -f 1,2
root:x
bin:x
daemon:x
adm:x

sort 排序

参数:

  • -n:依照数值的大小排序
  • -r:以相反的顺序来排序;
  • -t<分隔字符>:指定排序时所用的栏位分隔字符;
[root@localhost tmp]# cat 2.txt 
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
[root@localhost tmp]# sort 2.txt 
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
root:x:0:0:root:/root:/bin/bash

wc 命令

  • wc -l 统计行数
  • wc -m 统计字符数
  • wc -w 统计词数(以空格为分割符号)
[root@localhost tmp]# wc -l 2.txt 
4 2.txt
[root@localhost tmp]# wc -w 2.txt 
4 2.txt
[root@localhost tmp]# wc -m 2.txt 
142 2.txt

uniq命令去掉重复的(得先排序再去重)

[root@localhost tmp]# cat 3.txt 
112233
223344
334455
556677
112233
223344

[root@localhost tmp]# sort -n 3.txt | uniq

112233
223344
334455
556677

tee命令

tee和>类似是重定向输出的意思,tee -a 类似>>重定向追加,比如把3.txt排序,去重然后输出到1.txt中的命令为:

[root@localhost tmp]# sort 3.txt | uniq |tee 1.txt 

112233
223344
334455
556677
[root@localhost tmp]# cat 1.txt 

112233
223344
334455
556677

tee与>不同的是,它会把重定向的内容显示在屏幕上,而>则不会。

tr替换字符

tr aa bb =将字符aa换成字符bb

[root@localhost tmp]# cat 1.txt 

112233
223344
334455
556677
[root@localhost tmp]# tr '11' '99' < 1.txt 

992233
223344
334455
556677

|| 字符

“||”字符用在两条命令之间,表示前面命令执行不成功,就执行后面的命令

[root@localhost tmp]# cat 5.txt || cat 1.txt 
cat: 5.txt: 没有那个文件或目录

112233
223344
334455
556677
[root@localhost tmp]# cat 1.txt || cat 5.txt 

112233
223344
334455
556677

&&字符

&&字符表示前面命令执行成功了,才会执行后面命令

[root@localhost tmp]# mkdir lic && mv 1.txt lic
[root@localhost tmp]# ls
2.txt  3.txt  lic
[root@localhost tmp]# tree lic/
lic/
└── 1.txt

0 directories, 1 file

转载于:https://my.oschina.net/u/3731306/blog/1839472

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值