一、shell特殊符_cut命令
脱义字符:
[[email protected] ~]# c=\$a\$b //和 #c=‘$a$b‘ 效果一样
[[email protected] ~]# echo $c
$a$b
管道符
cut 分割
[[email protected] ~]# cat /etc/passwd |head -2 |cut -d ":" -f 1 //取第一段
root
bin
[[email protected] ~]# cat /etc/passwd |head -2 |cut -d ":" -f 1,2 //取第1,第2段
root:x
bin:x
[[email protected] ~]# cat /etc/passwd |head -2 |cut -d ":" -f 1-3 //取1-3段
root:x:0
bin:x:1
[[email protected] ~]# cat /etc/passwd | head -2 | cut -c 4 //-c,指定第几个字符 t |
---|
二、sort_wc_uniq命令
sort 排序
[[email protected] ~]# sort /etc/passwd //普通没有特殊符号的按照a b c d e 26个英文字母排序
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
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
hll:x:1001:1002::/home/hll:/bin/bash
[[email protected] ~]# sort filename //文件中有特殊符号、数字的先排特殊符号、数字、字母
(
[
}
11
345
88
aadgg
bbbb
dgfggf
sort -n选项
[[email protected] ~]# sort -n filename //-n选项以数字排序,和把特殊符号和字母都识别为0
(
[
}
aadgg
bbbb
dgfggf
11
88
345
sort -nr filename ,-r选项,反排序,最大在前面,最小的在后面
#wc -l //统计行数的命令
[[email protected] ~]# wc -l 2.txt //统计2.txt文件行数
19 2.txt
#wc -m //统计字符数的命令
[[email protected] ~]# wc -m 2.txt //统计2.txt文件的字符数
85 2.txt
#cat -A 2.txt //cat -A可以查看所有字符包括隐藏的,可以看到每行字符后面有一个换行符
#wc -w 2.txt //统计词的数量
[[email protected] ~]# wc -w 2.txt
18 2.txt
#uniq //去重复的,但是去重之前先要进行排序,然后再去重
可以先排序,使用 #sort 2.txt , 然后再 #sort 2.txt |uniq
三、tee_tr_split命令
tee 和 > 类似,重定向的同时还在屏幕显示
清空一个文件的命令:#> 2.txt //清空2.txt文件内容
sort 2.txt |uniq -c |tee 4.txt //把2.txt文件去重之后重定向输入到4.txt文件中,|tee的作用就是重定向,把管道前面的结果打印在屏幕上
#sort 2.txt |uniq -c |tee -a 4.txt //tee -a 就是追加
tr 命令是用来替换字符的
[[email protected] ~]# echo "linux" |tr ‘[ln]‘ ‘[LN]‘ //将ln替换为LN
LiNux
[[email protected] ~]# echo "linux" |tr ‘ln‘ ‘LN‘ //或者也可以写成这样
LiNux
[[email protected] ~]# echo "linux" |tr ‘[a-z]‘ ‘[A-Z]‘ //可以指定范围
LINUX
split 切割
#split -b 100M bigfile //-b选项,指定切割文件大小,不写单位1000后面默认单位是字节
#split -l 1000 bigfile //-l选项,指定切割文件行数
#find /etc/ -type f -name "*conf" -exec cat {} >> 3.txt \; //查找/etc下的.conf文件并把它追加到3.txt
#split -b 1000 3.txt //指定切割文件大小为1000字节
[[email protected] ~]# split -b 100K 3.txt abc //指定切割文件前缀为abc
[[email protected] ~]# ls
2.txt 4.txt abcab 3.txt abcaa abcac
#split -l 1000 3.txt // 切割1000行
四、shell特殊符号下
[[email protected] ~]# for i in seq 1 10
//执行多条命令
do
echo $i
done
1
2
3
4
5
6
7
8
9
10
[[email protected] ~]# for i inseq 1 10
; do echo $i; done //使用向上翻历史命令,列出来的是用分号隔开的多条命令
[[email protected] ~]# ls 3.txt ; wc -l 2.txt //两条命令一起执行中间加分号
3.txt
19 2.txt
正确重定向,会把之前文件覆盖掉
> 追加重定向正确的输出
2> 输出错误内容重定向
2>> 把错误信息追加重定向
&> 把正确错误内容输出到一个文件中
[ ] 指定字符中的一个,[0-9], [a-zA-Z], [abc]
|| 用在shell中表示或者的意思
#ls 1.txt || wc -l 2.txt // ||表示当第一条命令执行成功后就不执行第二条命令,第一条执行不成功则执行第二条
#ls 1.txt && wc -l 2.txt //&&表示前面的命令执行成功了才会执行后面的命令
#[ -d abcd ] || mkdir abcd //判断abcd目录是否存在,如果存在就不创建,如果不存在,就创建
原文地址:http://blog.51cto.com/13669226/2107519