linux,shell学习(五)

[b][align=center]文本过滤[/align][/b]
[b]1.正则表达式介绍 4.awk介绍
2.find介绍 5.sed介绍
3.grep介绍 6.合并与分割(sort,uniq,join,cut,paste,split)[/b]
[b]1.正则表达式:[/b]
1.1 什么是正则表达式
一种用来描述文本模式的特殊字符
1.2 由普通字符(例如:字符 a 到 z )以及特殊字符(称 元字符,如:/,*,?等)组成
1.3 文本过滤工具在某种模式下都支持正则表达式
1.4 正则表达式语法:[url]http://msdn.microsoft.com/zh-cn/library/ae5bf541(VS.80).aspx[/url]
[b]2.find命令[/b]
2.1 一个查找命令
2.2 查找具有某些特征的文件命令
2.3 可遍历当前目录甚至整个文件系统来查找某些文件或目录
2.4 遍历大的文件系统时,一般放在后台执行
2.5 find命令的格式:
[b]find pathname -options [-print -exec -ok][/b]
-pathname find命令查找的路径,例如:用.来表示当前路径,用/表示根目录
-print find命令将匹配文件输出到标准输出
-exec find命令,将匹配的文件执行该参数给出的shell命令,相应命令的形式:'command' { } \; 注意{}和\;之间的空格。
-ok和-exec命令作用相同。只不过以一种安全的模式来执行该参数所给出的shell命令,在执行每一个命令之前都会给出提示,让用户选择是否执行。
[b]2.6find命令选项[/b]
-name 按照文件名查找文件。
-perm 按照文件权限来查找文件。
-prune 使用这一选项可以使find命令不在当前指定的目录中查找,如果同时使用-depth选项,那么-prune将被find命令忽略。
-user 按照文件属主来查找文件。
-group 按照文件所属的组来查找文件。
-mtime -n +n 按照文件的更改时间来查找文件, - n表示文件更改时间距现在n天以内,+ n表示文件更改时间距现在n天以前。find命令还有-atime和-ctime 选项,但它们都和-m time选项。
-nogroup 查找无有效所属组的文件,即该文件所属的组在/etc/groups中不存在。
-nouser 查找无有效属主的文件,即该文件的属主在/etc/passwd中不存在。
-newer file1 ! file2 查找更改时间比文件file1新但比文件file2旧的文件。
-type 查找某一类型的文件,诸如:
b - 块设备文件。
d - 目录。
c - 字符设备文件。
p - 管道文件。
l - 符号链接文件。
f - 普通文件。
-size n:[c] 查找文件长度为n块的文件,带有c时表示文件长度以字节计。
-depth:在查找文件时,首先查找当前目录中的文件,然后再在其子目录中查找。
-fstype:查找位于某一类型文件系统中的文件,这些文件系统类型通常可以在配置文件/etc/fstab中找到,该配置文件中包含了本系统中有关文件系统的信息。
-mount:在查找文件时不跨越文件系统mount点。
-follow:如果find命令遇到符号链接文件,就跟踪至链接所指向的文件。
-cpio:对匹配的文件使用cpio命令,将这些文件备份到磁带设备中。
另外,下面三个的区别:
-amin n 查找系统中最后N分钟访问的文件
  -atime n 查找系统中最后n*24小时访问的文件
  -cmin n 查找系统中最后N分钟被改变文件状态的文件
  -ctime n 查找系统中最后n*24小时被改变文件状态的文件
-mmin n  查找系统中最后N分钟被改变文件数据的文件
  -mtime n 查找系统中最后n*24小时被改变文件数据的文件
[b]xargs[/b]
xargs - build and execute command lines from standard input
在使用find命令的-exec选项处理匹配到的文件时, find命令将所有匹配到的文件一起传递给exec执行。但有些系统对能够传递给exec的命令长度有限制,这样在find命令运行几分钟之后,就会出现 溢出错误。错误信息通常是“参数列太长”或“参数列溢出”。这就是xargs命令的用处所在,特别是与find命令一起使用。
find命令把匹配到的文件传递给xargs命令,而xargs命令每次只获取一部分文件而不是全部,不像-exec选项那样。这样它可以先处理最先获取的一部分文件,然后是下一批,并如此继续下去。
在有些系统中,使用-exec选项会为处理每一个匹配到的文件而发起一个相应的进程,并非将匹配到的文件全部作为参数一次执行;这样在有些情况下就会出现进程过多,系统性能下降的问题,因而效率不高;
而使用xargs命令则只有一个进程。另外,在使用xargs命令时,究竟是一次获取所有的参数,还是分批取得参数,以及每一次获取参数的数目都会根据该命令的选项及系统内核中相应的可调参数来确定。
下面的例子查找系统中的每一个普通文件,然后使用xargs命令来测试它们分别属于哪类文件:
[hadoop@localhost shellTest]$ find . -name "*.txt" | xargs ls -l
-rw-rw-r--. 1 hadoop hadoop 49 5月 26 05:44 ./aa.txt
-rw-rw-r--. 1 hadoop hadoop 49 5月 26 05:44 ./bb.txt
-rw-rw-r--. 1 hadoop hadoop 15 5月 26 05:46 ./cc.txt
-rw-rw-r--. 1 hadoop hadoop 9 5月 26 06:05 ./dd.txt
-rw-rw-r--. 1 hadoop hadoop 11 5月 26 06:09 ./ee.txt
-rw-rw-r--. 1 hadoop hadoop 51 5月 26 06:11 ./error.txt
-rw-rw-r--. 1 hadoop hadoop 0 5月 26 05:47 ./nullfile.txt
-rw-rw-r--. 1 hadoop hadoop 14 5月 30 17:41 ./ss/1.txt

[b] 2.grep命令[/b]
[b]grep的三种形式:[/b]
[b]grep:[/b]标准grep命令,本章大部分篇幅集中讨论此格式。
[b]egrep:[/b]扩展grep,支持基本及扩展的正则表达式,但不支持\q模式范围的应用,与之相对应的一些更加规范的模式,这里也不予讨论。
[b]fgrep:[/b]快速grep。允许查找字符串而不是一个模式。不要误解单词fast,实际上它与grep速度相当。
[b]grep命令格式:[/b]
- grep(参数)选项。
- 匹配grep的一般模式。
- 只匹配字母或数字,或两者混用。
- 匹配字符串范围。
[b]grep选项[/b]
常用的grep选项有:
-c 只输出匹配行的计数。
-i 不区分大小写(只适用于单字符)。
-h 查询多文件时不显示文件名。
-l 查询多文件时只输出包含匹配字符的文件名。
-n 显示匹配行及行号。
-s 不显示不存在或无匹配文本的错误信息。
-v 显示不包含匹配文本的所有行。
[b]grep "模式匹配" 文件[/b]
[b]AWK命令介绍[/b]
可以从文件或字符串中基于指定规则浏览和抽取信息
是一种自解释的编程语言
三种命令调用awk语言
[b]1.命令行方式[/b]
awk [-F field-spearator] 'command' input-files
[b]2.脚本[/b]
所有awk命令插入到一个文件中,并使awk程序可执行。然后用awk脚本解释器作为脚本的首行,以便键入脚本的名称来调用它。
[b]3.awk命令插入一个单独的文件[/b]
awk -f awk-script-spearator input-files
awk脚本由各种操作和模式组成。
[b]模式和动作[/b]
模式部分决定动作语句何时触发及触发事件.(BEGIN,END)
动作对数据进行处理,放在大括号{}内指明.(print)
[b]分隔符,域和记录[/b]
awk执行时,其浏览域标记为$1,$2...$n.这种方法称为域标识。$0为所有域。
[b]注意:[/b]执行时不要混淆符号$和shell中的$.他们是不同的。

[b][color=brown][size=large]sed,sort,uniq,join,cut,paste,split 搜索学习[/size][/color][/b]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值