您的位置:首页 > 运维架构 > Shell

SHELL [正则表达式][grep][tr]

2011-07-19 08:38 323 查看
正则表达式

基本元字符集及其含义
^ 只匹配行首 ^d ^$所有空行 ^.$只包含一个字符的行 [^0-9]非数字型字符

$ 只匹配行尾 trouble$ 以trouble结尾的所有行

* 0至多个单字符 [A-Za-z]

[] 字符或序列范围 [A-Za-z0-9]

\ 屏蔽特殊含义 $ . ' " * [ ] ^ | () \ + ?

. 匹配任意单字符 ...x..x..x 权限查找 [ou].*t 任意字符任意次,t结尾

pattern\{n\} 匹配前面patern出现的次数 A\{2\}B AAB

pattern\{n\}m 至少n次

pattern\{n,m\} A\{2,\}B AAAB A\{2,4\}B AAB AAAB AAAAB

^USER$ 只含USER的行
^the 以the开头的行 ^[the]

[tty]$ 以tty结尾的行 [tty]$

.*0 0之前加任意字符 [.*0]

[iI] 大写I或i
^$ 空行

^.*$ 行中任意字符串

[a-z][a-z]* 至少一个字符

[^0-9A-Za-z] 非字符

[123] 1到3中一个数字
grep

grep [ 选项] 基本正则表达式 [文件]
调用变量时,应该使用双引号 "$MYVAR";调用模式匹配时,使用单引号

-c 只输出匹配行的计数
grep -c "48" data.f
-n 显示匹配行和行号
grep -n "48" data.f
-v 显示非匹配行
grep -v "48" data.f
精确匹配
grep "48<tab>" data.f
grep "48\>" data.f
-i 不区分大小写
grep -i "sept" data.f
正则表达式
grep '48[34]‘ data.f 48开始,3或4结尾
grep '^[^48]' data.f 行首不是48
grep '[Ss]ept' data.f 设置大小写
grep 'K...D' data.f 匹配任意字符
grep '^[0-9]' data.f 行首已数字开始
grep '9\{3,\} data.f
grep -E '219|216' data.f 扩展模式匹配 或者
grep '^$' myfile
tr用法

从标准输入中通过替换或删除操作进行字符转换
cat myfile | tr "[a-x]" "[A-Z]" > upper_myfile 小写到大写

cat myfile | tr "[A-Z]" "[a-z]" > lower_myfile 大写到小写
-s 删除所有重复出现字符序列,只保留第一个
tr -s ["\n"] <plane.txt 去除空行

tr -s "[a-z]" 去除重复字符
tr -s "[\r]" "[\n]" < input_file 删除文件中^M,并代之以换行

tr "[0*4]" "*" <hdisk.txt 匹配至少4个0,替换成“*”
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: