几个常用的文本处理shell 命令:find、grep、sort、uniq、sed、awk

时间:2022-07-31 08:53:39

find 文件查找

查找txt和pdf文件

1
find . \( -name  "*.txt"  -o -name  "*.pdf"  \) -print

查找所有字母开头的文件

1
find . -name  "[a-a]*"

否定参数->查找所有非txt文本

1
find . ! -name  "*.txt"  -print

指定搜索深度->打印出当前目录的文件(深度为1)

1
find . -maxdepth  1  -type f

正则方式查找.txt和pdf

1
2
find . -regex   ".*\(\.txt|\.pdf\)$"
-iregex: 忽略大小写的正则

查找目录下属性为755的文件

1
find . -prem  755

查找所属主为root的文件

1
find -user root

寻找大于2k的文件

1
find . -type f -size +2k

找到文件后续动作

删除当前目录下所有的avi文件

1
find . -type f -name  "*.avi"  - delete

执行动作(强大的exec)

1
find . -type f -user root -exec chown root {} \;  //将当前目录下的所有权变更为root

grep 文本搜索

在file文件中过滤掉字符串'str'所在的行

1
grep -v  "str"  file

在file文件中查找时间在2017:22:50~2017:22:59所在的行

1
grep -E  "2017:22:5[0-9]"  file

在file文件中查找不包括360的行

1
grep -E  "^[^360]"  file

在file文件中查找包括w和t的行

1
grep -E  "w*t"  file

在file文件中查找大于560小于893的行

1
grep -E  "[5-8][6-9][0-3]"

在file文件中查找包含两个9的行

1
grep -E  "9{2}"  file

查找大于两个9的行

1
grep -E  "9{2,}"  file

查找file文件中的空行

1
grep -E  "^$"  file

查找包括?的行

1
grep  "?"  file

查找文件中以w开头的行

1
grep -E  "^w"  file

查找文件中不是以w开头的行

1
grep -E  "^[^w]"  file

awk 数据流处理工具

查找出日志文件中的每一列

1
awk  '{print $0}'  log.log

查找出文件中的第一列和第七列

1
awk  '{print %$1 "\t"$7}'  log.log

~匹配192.168.10.2的ip地址统计。!~为不匹配

1
cat file | awk  '$0 !~ /192.168.10.2/'  | grep  'php'  |wc -|

sed 行定位

只打印第二行,不打印其它行的数据

1
sed -n  '2' p file

从第一行到第九行的记录

1
sed  -n  '1,9' file

打印匹配php的行

1
sed -n '/php/p file

打印从第九行到匹配php的之间所有行

1
sed -n  '9,/php/' p file

把第一行和第二行全部删除(非文件删除)

1
sed  '1,2' d file

Uniq行定位的使用

打印紧挨的重复行出现的次数

1
uniq  -c  file

只打印重复的行

1
uniq -d file

把apache网站的所有访问ip统计出来,并打印统计次数

1
awk  '{print $1}'  / var /log/httpd/access_log | sort | uniq -c

sort排序的使用

把文件喊字母的圣墟进行排序

1
sort file

把文件按照字母的降序进行排序

1
sort  -r  file

为进行分割后的第一列来排序

1
cat file | sort -t: -k1 -r