shell特殊符、sort、tee、
shell特殊符_cut命令* 任意个任意字符
? 任意一个字符
# 注释字符
\ 脱义字符
# c='$a$b'====c=\$a\$b
# c=\$a\$b
# echo $c
$a$b
| 管道符
cut 分割,-d 分隔符-f 指定段号 -c 指定第几个字符
# cat /etc/passwd | cut -d ":" -f 1,2,3 | head -2 //截取
root:x:0
bin:x:1
# cat /etc/passwd | cut -d ":" -f 1-5 | head -2
root:x:0:0:root
bin:x:1:1:bin
sort_wc_uniq命令
sort 排序, -n 以数字排序 -r 反序 -t 分隔符 -kn1/-kn1,n2(了解)
# sort /etc/passwd//按照ASCII编码
adm:x:3:4:adm:/var/adm:/sbin/nologin
avahi-autoipd:x:170:170:Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/sbin/nologin
avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
halt:x:7:0:halt:/sbin:/sbin/halt
# tail -15 1.txt | sort -n//按数字排序,特殊字符和字母都会被认为是0
0
a
b
f
gtsd
4
5
22
23
23
23
44
# tail -15 1.txt | sort -nr//反序
678
44
23
23
23
uniq 去重, -c统计行数
# sort 1.txt |uniq -c//排序去重
2
3 23
1 3
2 4
1 44
2 5
1 678
2 a
1 adm:x:3:4:adm:/var/adm:/sbin/nologin
2 b
wc -l 统计行数 -m 统计字符数 -w 统计词
# wc -l 1.txt //统计行数
38 1.txt
# vi 2.txt
11
22
# wc -m 2.txt //字符数
6 2.txt
# cat -A 2.txt //-A所有字符 $换行符
11$
22$
# wc -w 2.txt //词数 以空白字符作为分隔符
2 2.txt
tee_tr_split命令
tee 和>类似,重定向的同时还在屏幕显示
# sort 1.txt |uniq -c >3.txt//这种方式无法再屏幕输出
# cat 3.txt
2
1 0
1 111
1 22
3 23
1 3
2 4
1 44
2 5
1 678
2 a
1 adm:x:3:4:adm:/var/adm:/sbin/nologin
1 avahi-autoipd:x:170:170:Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/sbin/nologin
# sort 1.txt |uniq -c | tee 3.txt //重定向在屏幕显示结果
2
1 0
1 111
1 22
3 23
1 3
2 4
1 44
2 5
1 678
# sort 1.txt |uniq -c |tee -a 3.txt //追加-a
tr 替换字符,tr 'a' 'b',大小写替换tr '' ''
# echo 'lsxlinux' |tr 'sl' 'SL'//将sl替换成SL
LSxLinux
# echo 'lsxlinux' |tr 'a-z' 'A-Z' //将所有小写字母替换成大写字母
LSXLINUX
# echo 'lsxlinux' |tr 'a-z' '1'
11111111
split 切割,-b大小(默认单位字节),-l行数
# find / -type f -name '*.conf' -exec cat {} > 1.txt \;
# split -b 1000 1.txt lsx.//指定前缀
# ls
1.txtlsxablsxadlsxaflsxahlsxajlsxallsxanlsxaplsxar
lsxaalsxaclsxaelsxaglsxailsxaklsxamlsxaolsxaqlsxas
# du -sb *
# split -l 10 1.txt//指定10行
# wc -l *
399 1.txt
10 xaa
10 xab
10 xac
shell特殊符号(下)
$ 变量前缀,!$组合,正则里面表示行尾
!$ 命令行表示历史命令里最后一行最后一个参数
;多条命令写到一行,用分号分割
~ 用户家目录,后面正则表达式表示匹配符
& 放到命令后面,会把命令丢到后台
> >> 2> 2>> &>
[ ] 指定字符中的一个,,,
|| 和 && ,用于命令之间
||或者:当执行前面一句成功就不在执行后面一句(不管后面那句成功与否)
# ls xao || lsx xxx
Xao
如果前面执行不成功的继续执行后面一句
# lsx xxx || ls xao
-bash: lsx: 未找到命令
xao
&&当前面一句执行不成功的后面不在执行;前面成功的会继续执行后面
# ls xao && lsx xxx
xao
-bash: lsx: 未找到命令
# lsx xxx && ls xao
-bash: lsx: 未找到命令
页:
[1]