BASH命令和SHELL脚本总结(14)cat和grep和sort

cat

显示行号

cat -n


只对非空行显示行号

cat -b


对连续的空行只输出一个空行

cat -s



grep

添加颜色

grep --color 


打印匹配行后面的N行

grep -A N 


打印匹配行前面的N行

grep -B N 


打印匹配行前后的N行

grep -C N  


打印含有匹配行的文件的文件名

grep -l "query"  ./* 


打印没有匹配行的文件的文件名

grep -L "query"  ./* 


把pattern当作一个固定的字符串, 不进行正则解析,可以加快速度。

grep -F 


只对指定的文件进行搜索

grep -nr --include=*.sh "AA" ./FILE1/




sort

1. 对文件按照修改时间排序

ll LinkunitServer/|sort -k8,8
排序前
-rw-r--r-- 1 user1 user1   8493 Mar 21 10:30 Data.cpp
-rw-r--r-- 1 user1 user1  26969 Mar 21 10:31 Logic.cpp
-rw-r--r-- 1 user1 user1 105092 Mar 21 10:32 LogicWorker.cpp
-rw-r--r-- 1 user1 user1  15107 Mar 21 10:32 LogicWorker.h
-rw-r--r-- 1 user1 user1    907 Mar 21 10:30 Poll.cpp
-rw-r--r-- 1 user1 user1    900 Mar 21 10:30 Type.h
-rw-r--r-- 1 user1 user1     93 Mar 21 10:30 Version.h
排序后
-rw-r--r-- 1 user1 user1   8493 Mar 21 10:30 Data.cpp
-rw-r--r-- 1 user1 user1    900 Mar 21 10:30 Type.h
-rw-r--r-- 1 user1 user1    907 Mar 21 10:30 Poll.cpp
-rw-r--r-- 1 user1 user1     93 Mar 21 10:30 Version.h
-rw-r--r-- 1 user1 user1  26969 Mar 21 10:31 Logic.cpp
-rw-r--r-- 1 user1 user1 105092 Mar 21 10:32 LogicWorker.cpp
-rw-r--r-- 1 user1 user1  15107 Mar 21 10:32 LogicWorker.h

2. 针对多个域(列)进行排序
eg 只针对公司英文名称的第二个字母进行排序,如果相同的按照员工工资进行降序排序:
sort -t ‘ ‘ -k 1.2,1.2 -k 3,3nr salary.txt
排序前
google 110 5000
baidu 100 5000
yahoo 50 3000
soso 100 4500
etao 500 3500
排序后
baidu 100 5000
yahoo 50 3000
etao 500 3500
google 110 5000
soso 100 4500
由于只对第二个字母进行排序,所以我们使用了-k 1.2,1.2的表示方式,表示我们“只”对第二个字母进行排序。若使用-k 1.2,就意味着将对从第二个字母起到本域最后一个字符为止的字符串进行排序。同理,对员工工资进行排 序,使用了-k 3,3,表示“只”对本域进行排序。


3. 其它常用选项

对整数排序

-n, –numeric-sort 


对于浮点数,负数,排序,当然也可以对整数排序,不过性能比如-n高

-g, –general-numeric-sort 


按文件大小进行排序 可以排序2K, 1G等带单位的数字,适合排序某文件夹下所有文件和文件的大小,如

-h, –human-numeric-sort 
du -sh * | sort -h


按月份进行排序

-M, –month-sort 


按字典序排序, 忽略字母、数字、空白字符外的所有字符

-d, –dictionary-order 


你可能感兴趣的:(Scripts)