linux--shelll学习 [2]
时间:2006-12-23 来源:asong2001
第五章 文本过滤
。基本元字符集及其含义
------------------------------------------------------------------------
^ 只匹配行首
$ 只匹配行尾
* 匹配0个或多个此单字符
[] 只匹配[]内字符。可以是一个单字符,也可以是字符序列。可以使用-表示[]
内字符序列范围,如用[1-5]代替[12345]
\ 只用来屏蔽一个元字符的特殊含义,特数字符" ,' ,|| ,^ ,* ,+等
. 只匹配任意单字符
pattern\{n\} 匹配前面pattern出现次数,n为次数
pattern\{n,\} 含义同上,但次数最少为n
pattern\{n,m\} 含义同上,但pattern出现次数在n与m之间
find 命令
。find pathname -options [-print -exec -ok]
。-exec 用法 find -name "a.txt" -exec ls -l {} \;表示将查找到的a.txt文件显示其完整属性(用管道也可以)
。一些选项
--------------------------------------------------------------------------------------
-name 按照文件名查找文件
-perm 按照文件权限查找
-user 按照文件属主查找
-group 按照文件所属的组来查找
-mtime -n +n 按照文件更改时间查找 -n表示距今天n天以内 +n表示据今天n天以外
-size 按照文件大小查找
-nouser 查找无有效属组的文件
-nogroup 查找无有效所属组的文件
-newer file1 ! -newer file2 查找比file1新比file2旧的文件
-type 查找某一类型的文件 b 块设备 d 目录 c字符设备 p 管道文件
l 符号连接文件 f 普通文件
-----------------------------------------------------------------------------------------------
grep 命令
grep [选项] 基本正则表达式 [文件名]
。-c 只输出匹配行的计数值
。-i 不区分大小写(只适用于单字符)
。-h 查询多文件时不显示文件名
。H 显示文件名
。-l 查询多文件时只输出包含匹配字符的文件名
。-n 显示匹配行及行号
。-s 不显示不存在或无匹配文本的错误信息
。-v 显示不包含匹配文本的所有行
--------------------------------------------------------------------------------------------------------------
awk 命令
可以从文件或字符串中基于指定规则浏览和抽取信息
命令行方式调用awk: awk [ -F filed-spearator ] 'command' input-files
几个例子:
。awk '{print $0}' socre.txt |tee score.out
。awk '{print $1 "\t" $4}' score.txt
。awk 'BEGIN {print "Name Date \n-------------------"} {print $1 "\t" $4 } END {"end-of-report"}' score.txt
。匹配操作符: ~(匹配) !~(不匹配)
。cat score.txt | awk '$0 ~ /name/'
。awk '{if ($1=="21888") print $0}' score.txt
。基本元字符集及其含义
------------------------------------------------------------------------
^ 只匹配行首
$ 只匹配行尾
* 匹配0个或多个此单字符
[] 只匹配[]内字符。可以是一个单字符,也可以是字符序列。可以使用-表示[]
内字符序列范围,如用[1-5]代替[12345]
\ 只用来屏蔽一个元字符的特殊含义,特数字符" ,' ,|| ,^ ,* ,+等
. 只匹配任意单字符
pattern\{n\} 匹配前面pattern出现次数,n为次数
pattern\{n,\} 含义同上,但次数最少为n
pattern\{n,m\} 含义同上,但pattern出现次数在n与m之间
find 命令
。find pathname -options [-print -exec -ok]
。-exec 用法 find -name "a.txt" -exec ls -l {} \;表示将查找到的a.txt文件显示其完整属性(用管道也可以)
。一些选项
--------------------------------------------------------------------------------------
-name 按照文件名查找文件
-perm 按照文件权限查找
-user 按照文件属主查找
-group 按照文件所属的组来查找
-mtime -n +n 按照文件更改时间查找 -n表示距今天n天以内 +n表示据今天n天以外
-size 按照文件大小查找
-nouser 查找无有效属组的文件
-nogroup 查找无有效所属组的文件
-newer file1 ! -newer file2 查找比file1新比file2旧的文件
-type 查找某一类型的文件 b 块设备 d 目录 c字符设备 p 管道文件
l 符号连接文件 f 普通文件
-----------------------------------------------------------------------------------------------
grep 命令
grep [选项] 基本正则表达式 [文件名]
。-c 只输出匹配行的计数值
。-i 不区分大小写(只适用于单字符)
。-h 查询多文件时不显示文件名
。H 显示文件名
。-l 查询多文件时只输出包含匹配字符的文件名
。-n 显示匹配行及行号
。-s 不显示不存在或无匹配文本的错误信息
。-v 显示不包含匹配文本的所有行
--------------------------------------------------------------------------------------------------------------
awk 命令
可以从文件或字符串中基于指定规则浏览和抽取信息
命令行方式调用awk: awk [ -F filed-spearator ] 'command' input-files
几个例子:
。awk '{print $0}' socre.txt |tee score.out
。awk '{print $1 "\t" $4}' score.txt
。awk 'BEGIN {print "Name Date \n-------------------"} {print $1 "\t" $4 } END {"end-of-report"}' score.txt
。匹配操作符: ~(匹配) !~(不匹配)
。cat score.txt | awk '$0 ~ /name/'
。awk '{if ($1=="21888") print $0}' score.txt
相关阅读 更多 +