Shell文本过滤

简介:

1、正则表达式

元字符:
^:只匹配行首,如^d匹配drwxr-x--x
$:只匹配行尾,如trouble$:匹配以trouble结尾的所有字符;^$:匹配空行
*:匹配0个或多个
[]:匹配字符或字符序列,中间可以使用' -',' ,'来进行分割,如[1-5]匹配12345, [0-9]匹配0到9, [a-z],[A-Za-z],[A-Za-z0-9]等
\:屏蔽元字符的特殊含义,如 ', ", ||, ^, *, +等特殊字符
.:只匹配任意单个字符,如...x..x..x, 匹配drwxr-x--x
pattern\{n\}:用来匹配pattern出现的次数,n为次数
pattern\{n,\}:含义同上,但至少匹配n次
pattern\{n,m\}:含义同上,但pattern出现的次数在n与m之间

2、find

find path -options [-print -exec -ok]
-name,如find ./ -name "[A-Z]*" -print
-perm,如find . -perm 755 -print
-user,如find `pwd` -user root -print或者find `pwd` -user "root" -print
-group,如find ./ -group root -print
-mtime -n +n, 如改变时间在5天以内的 find /var/ -mtime -5 -print; 改变时间在3天以前的文件 find /var/ -mtime +3 -print
-atime
-ctime
-size n[c]:查找文件长度为n块的文件,带有c时表示文件长度以字节计, 如大于10M的文件: find . -size +10000000c -print
-nogroup
-nouser:find `pwd` -nouser -print
-newer file1 ! -newer file2:查找比file1新但比file2旧的文件, 如 find `pwd` -newer "spctab.lis" ! -newer "sp_6_7.lst" -print

-type:查找某一类型的文件,b:块文件,d:目录, c:字符设备文件,p:管道文件,l:符号链接文件,f:普通文件
如:find /etc/ -type d -print:查找/etc目录下的文件夹有哪些
-exec或ok来执行shell命令:如find /tmp/ -type f  -exec ls -l {} \;
find /var/log -name "*.log" -mtime +5 -exec rm {} \;

xargs:由于当大量的内容传递给exec时,存在溢出问题,所以建议在能找到文件时使用xargs命令
find ./ -perm -7 -print | xargs chmod o-w

-depth:先匹配所有文件,再在子目录中查找

man find

3、grep
-c:只输出匹配行的计数
查看文件abc中包含“ 安装”字符的行数有多少
[root@oracle11g ab]# grep -c "安装" abc 
751
-i:不区分大小写
-h:查询多文件时不显示文件名
-H:显示文件名
-l:查询多文件时只输出匹配字符的文件名
-n:显示匹配行及行号
[root@oracle11g ab]# grep -n "scim-tables-0.5.6-7.i386" abc 
742:安装 scim-tables-0.5.6-7.i386

-s:不显示不存在或无匹配文本的错误信息
-V:显示不包含匹配文本的所有行

4、awk


5、sed


6、合并与分割(sort,uniq,join,cut, paste, split)




本文转自 tianya23 51CTO博客,原文链接:http://blog.51cto.com/tianya23/274950,如需转载请自行联系原作者
相关文章
|
7月前
|
存储 Shell Linux
【Shell 命令集合 文档编辑】Linux 文本统计 wc命令使用指南
【Shell 命令集合 文档编辑】Linux 文本统计 wc命令使用指南
164 0
|
Linux Shell
linux shell取文本最后一行
目前我知道的方法有四种 1.awk 'END {print}'   2.sed -n '$p'   3.sed '$!N;$!D'   4.awk '{b=a"\n"$0;a=$0}END{print b}'
3095 0
|
7月前
|
Linux C语言 C++
Linux Shell_cut命令(按列提取文本字符)
Linux Shell_cut命令(按列提取文本字符)
79 0
|
7月前
|
算法 Shell Linux
【Shell 命令集合 文档编辑】Linux 文本搜索工具 grep命令使用指南
【Shell 命令集合 文档编辑】Linux 文本搜索工具 grep命令使用指南
84 4
|
7月前
|
算法 Shell Linux
【Shell 命令集合 文档编辑 】Linux 文本搜索 look 命令使用指南
【Shell 命令集合 文档编辑 】Linux 文本搜索 look 命令使用指南
76 0
|
存储 运维 Unix
shell脚本应用——文本处理器
shell脚本应用——文本处理器
106 0
|
Shell Linux Perl
Adb Shell输入带空格的文本串
Adb Shell输入带空格的文本串
368 0
|
Shell 索引 Perl
Shell 编程(六):文本三剑客之 awk(一)
awk 是一个文本处理工具,通常用于处理数据并生成结果报告,awk的命名是它的创始人 Alfred Aho、 Peter Weinberger 和 Brian Kernighan 姓氏的首个字母组成的。
139 0
|
分布式计算 资源调度 网络协议
Shell 编程(六):文本三剑客之 awk(二)
awk 是一个文本处理工具,通常用于处理数据并生成结果报告,awk的命名是它的创始人 Alfred Aho、 Peter Weinberger 和 Brian Kernighan 姓氏的首个字母组成的。
170 0
|
存储 分布式计算 关系型数据库
Shell 编程(五):文本三剑客之 sed(二)
sed(Stream Editor)是一种流编辑器,sed 是对标准输出或文件逐行进行处理。sed 会在编辑器处理数据以前基于预先提供的一组规则来编辑数据流。能够根据命令来处理数据流中的数据,这些命令要么从命令行中输入,要么存储在一个命令文本文件中。
150 0