像我儿子一样永远保持好奇和梦想

[o][LINUX utility 001] 常用的shell命令工具

上一篇 / 下一篇  2012-10-24 10:34:24 / 个人分类:linux

8q3M aa aA0b0 01 tee:ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台oL8l c l#weK\ T

tvd+H7j r c0tee 的使用经常用来解决你想在屏幕上看到输出,同时却把输出存储下来的情况ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台&Z)^v#B*C4f

ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台J o$R@2L RD

没有用tee之前,你可能需要写下面这些

(D'X3]ka u0

pPP v"UQW0# echo something > something.log 2>&1 然后就结束了操作,如果你需要redirected 的话那么最好还是用tee

lls k"i{0ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台.O#|9eT8y&~1~

#echo something | tee something.log | lessET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台;x)V,c3LWI

(X/ao9w){1S`0ref:http://en.wikipedia.org/wiki/Tee_(command)

,v Ei8yl+I p9d0

R jb+r"\;`QO0


v/T;b D)c-n2bm0

8N'~:X[ d1j)|0http://www.cnblogs.com/orez88/articles/1889781.htmlET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台 [/uSgj]/g7b6OZO |F

ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台 ka$z-dH

grep
ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台&r^\ EIY

    -c 只打印匹配模式的行编号记数

iEF9d0P8C |0

    -I 在匹配文本时忽略大小写
ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台7Fmy8hA0X

    -n 在每行前显示其行编号
ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台]%xS$Pq\(z4bD

    -v 逆向输出,打印不匹配的行

;}dH;\F0

    -f file 要匹配的字符串列表在filezhong

fqo1{1_9u z0

grep ‘[Tt]his’ file1.txt 设置大小写
ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台X:h l+Le

grep ‘^[^#]‘ file2.txt 不匹配行首
ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台T Eo]b.k1J_%@"cRz


ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台He8n~ SR+g1{

grep “s…n” file3.txt 匹配任意字符

p#S _*Y't q CV0


ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台1g6UB[0[A

sed 行编辑命令
    s 替代
ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台5D%M*T%@e%K8j A O}?

    i 插入
ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台LT2~/l1gw|

    a 附加

3rFaDG0e.]'w0

    d    删除全部匹配的行

Ld0G/tF,{XXP0

    D    删除首次匹配的行

,vG y%B5K:J0

sed可以做什么(”行”为基础)
ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台&Z4b`vb

    删除

)rRG/WV3Vp0

    改变
ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台2x&ye`uOb

    添加

4]Ja ~*wD `9hq0

    插入

8N*X5bIs0

    替换

,Z.t(p[}:w0

示例

g4lh5pJ i7G:{C0

sed –n ’1,4p’ /etc/passwd p是打印 -n 不显示原文件 打印1-4行

t W[VDK0

sed ‘/80/D’ file.txt 首次出现80的行进行删除
ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台&BE$~*c+D*t S$R

sed ‘s/var/usr/g’ file.txt 将所有的var替换成usr g代表所有
ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台Ls%F]/ci+^ a%BU

sed ’50,$s/help/man/g’ file.txt 替换从50行到最后一行的help替换为man 前49不管
ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台"~)| Tn*TU9i

awk 可以处理列,也可以处理行,可以定位到第几行,第几列
ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台*B)D!]N$xaxiW

awk [选项] ‘awk脚本’ 输入文件
ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台D1xc0Jg}

    -F fs 使用fs作为输入记录的字段分隔符 = sort –t

ic [&\:|8@zi0

    -f filename 从文件filename读取awk_script(awk脚本)

7\Aw)^ g` [&r0

    -v var=value 为awk_script. 设置变量
ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台,~%o*lN3SJi"]

awk的内置变量
ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台o+HW4T O&b

变量功能默认
FS =大写F输入字段分隔符空格或tab
RS输入记录分隔符换行
OFS =out FS输出字段分隔符空格或tab
ORS输出记录分隔符换行
NF 常用当前记录非空字段的编号 
NR 常用从所有文件读入的记录号 

 ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台3lWe3],SA

示例

G4ov.oq+^*Xr0

awk –F : ‘{print NR,$1,$2}’ /etc/passwd

9J^@p6v D2ta0


ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台3yL`5]k

awk –F : ‘{print NR,$1,$NF}’ /etc/passwd $NF 提取最后一行

_,w||)~1oE0

awk –F : ‘NR%10==5{PRINT nr,$0}’ /etc/passwd NR= 当前处理的行数 除10求余=5打印当前的行数,进行输出 $0 整行输出,比如5、15、25 打印出来
ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台vSS0c1y/QzF

awk –F : ‘NR==8,NR==13 {print NR,$0}’ /etc/passwd 指定8行和13行。

iv.l'h.YF Y0

awk工作原理(工具)
ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台bep,DKh h


#[3B-Ta!f'hfw0

$NF $NR $1 第一列 $2 第二列 $0 一整行
ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台(lK/m$ZX l/Ys

实际测试
ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台8BtuLd8@P@zJ

awk –F: ‘{print $1,$3}’/etc/passwd

gGE8b@@{^3d0


r"Zi%jFNQ0

awk –F: ‘{print $1,$NF}’/etc/passwd

.Z cz4Oa0


ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台3UH ZuyJh;l

awk –F: ‘{print NR,$1,$NF}’/etc/passwd NR行号

%L E aG1~Z#K c?0


e3dY Y&w6C'Ql0

awk –F: ‘NR==5,NR==8{print NR,$1,$NF}’/etc/passwd 指定5-8行

,K[`#d6Ax!KjQ0


ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台 D Q5H!jWe7RU B N/^

awk –F: ‘NR%10==5{print NR,$1,$NF}’/etc/passwd 除10求余
ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台GZr x$J7B9l!Gi,^


ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台Lm+n.|0Ed2y0X

课程示例测试

R2bvy-EMc0

1、grep –v “-” file.txt 去除所有带负号的数据 -v显示没有的 没有的话则显示只有-的

1V*HP.}\K}W7Ea;o0

2、wc -l file.txt显示所有行数 grep –v “-” file.txt |wc –l 统计所有没有负数的

Lm&g7k\)W&F#R7M2Gf0

3、sort –n –r –k4 file.txt |sed –n ’1p’ 排序第四列 没有分隔符(即空格),-n威尼斯人线上娱乐 –r 从大到小 sed管道 显示第一行 sed –n不显示原文件

]/Hby4J0

    sort –n –r –k4 file.txt |head -1 读取第一个数据 head 第一行
ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台*z*Jw}Vm]i

4、awk ‘{if($NF>3){print $0}}’ file.txt NF 最后一列大于3 则打印一整行

t?i-eA!K XE0

5、awk ‘{if($4>0,&&$4<15){print $0}}’ file.txt 列出第四列 大于0小于15 输出整行
ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台'H.X*^g!KeGLE

    awk ‘{if($4>0,&&$4<15){print $0}}’ file.txt |wc –l 显示行数

n LGW4Z%|t0

练习:
ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台c]Ob6rk)Id


3|.S.M o5p5tK n0
  1. grep和awk

    awk ‘{if($1>200801011){[print $0}}’file.txt
    ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台{p vNg'Sjqe

2、

KM~ o?*]}.J3@'dKk0

处理命令回顾:

I\ZHpl{#C.g rl0

统计文本                wc

\#jO6tt(bJe0

文本排序                sort
ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台?8N4pw2x-g3Gi`0s5z

文本/目录对比            diff

"_)e8fy m0

在文件中查找关键行        grep / sed
ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台3^y1H?:}t

在行文本中添、删、改    sed

A}#sw,V$ZxI0

在列文本中显示指定列    awk

)ge"J7\-Zpaz9P1K0

在列文本中进行计算        awk

T}:~ ]s"Y0

在列文本进行条件选择    awk

8Y/g;{$R Y8k7m0

f)]#MzX0

*_4nG0Z-v;Z4L)X0ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台U.Q/k-Z+xW7PdZ5r

&J%t!_)j!g0ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台&J;s4om h ur

ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台j$h8k _X^z(h2@5J


ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台o8GCUg?3z

grep与正则表达式

s)xd-Ii@PVj9[0

-{ ?EJpcSTJ0首先要记住的是: 正则表达式与通配符不一样,它们表示的含义并不相同!ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台nr0p L Mr7Kl
正则表达式只是一种表示法,只要工具支持这种表示法, 那么该工具就可以处理正则表达式的字符串。vim、grep、awk 、sed 都支持正则表达式,也正是因为由于它们支持正则,才显得它们强大;在以前上班的公司里,由于公司是基于web的服务型网站(nginx),对正则的需求比 较大,所以也花了点时间研究正则,特与大家分享下:
C4\)}B5?0ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台v H"t yA
1基础正则表达式

5PJ!x'_ n0grep 工具,以前介绍过。ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台ci9UWG L3gTK
grep -[acinv] '搜索内容串' filenameET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台p)p^im
-a 以文本文件方式搜索
*~O5}eQs#u t0-c 计算找到的符合行的次数ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台J)U9[2DN2n
-i 忽略大小写ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台G h^;v X LNB
-n 顺便输出行号ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台4a'I'nli:X8\
-v 反向选择,即找 没有搜索字符串的行
ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台Rwt{]4`Xg%y
其中搜索串可以是正则表达式!
8}9R"A^W!@0
e9kso v_(M H q,A0
1ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台,bZGV#w[(}
搜索有the的行,并输出行号ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台%O%q4ERDE EK"i-o2?
$grep -n 'the' regular_express.txtET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台}aK&Sb'R|
搜 索没有the的行,并输出行号
/{G\.i\7v?@0$grep -nv 'the' regular_express.txt
ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台3V&B3ps,K2YOv

p O(if/R02
利 用[]搜索集合字符ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台 yN&h^:m7X&j.x4N$d
[] 表示其中的某一个字符 ,例如[ade] 表示a或d或e
ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台)`(Xx _xFA$hl
woody@xiaoc:~/tmp$ grep -n 't[ae]st' regular_express.txt
Ha` ~&SP:[08:I can't finish the test.
J\^ o^j09:Oh! the soup taste good!ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台 |S C E KNn Ye
ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台9Ad#],s!i,]
可以用^符号做[]内的前缀,表示除[]内的字符之外的字 符。ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台Vo%I5M-S6@"@2z1ER
比如搜索oo前没有g的字符串所在的行. 使用 '[^g]oo' 作搜索字符串

&n U WI_#~1i7g0woody@xiaoc:~/tmp$ grep -n '[^g]oo' regular_express.txt
cAkpb+M/c_ S0j b02:apple is my favorite
food.
x'a6nnps6]C03:
Football game is not use feet only.ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台lM3eb3K3H g&TLU3i
18:google is the best
tools for search keyword.ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台(b0|9n `O#~zu
19:go
ooooogle yes!
!m,p-O.Q`,Q0ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台p B-TqXcm'F
[] 内可以用范围表示,比如[a-z] 表示小写字母,[0-9] 表示0~9的威尼斯人线上娱乐, [A-Z] 则是大写字母们。[a-zA-Z0-9]表示所有威尼斯人线上娱乐与英文字符。 当然也可以配合^来排除字符。
$`g(g/@G.^~ S0
搜索包含威尼斯人线上娱乐的行
5d!r z,d-\ z ~v0woody@xiaoc:~/tmp$ grep -n '[0-9]' regular_express.txt

1`J1IRVP/Y"\05:However ,this dress is about $ 3183 dollars.ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台e@i6dUv A,u1[
15:You are the best is menu you are the no.1.ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台7qb,ZnX3K

JgH^:_0
行首与行尾字符 ^ $. ^ 表示行的开头,$表示行的结尾( 不是字符,是位置)那么‘^$’ 就表示空行,因为只有
,`|v9e,U0行首和行尾。

4kHE5m,i,b8T#p)x0这里^与[]里面使用的^意义不同。它表示^后面的串是在行的开头。ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台Q-bn)KPubhX
比如搜索the在开头的行
&w2o8vic1K bt0woody@xiaoc:~/tmp$ grep -n '^the' regular_express.txt
#FB;@ hpW012:the symbol '*' is represented as star.

{6`.U&\gX q`0ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台?0d:j+W/|!Ru
搜索以小写字母开头的行ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台!l4R8~,]WR
woody@xiaoc:~/tmp$ grep -n '^[a-z]' regular_express.txt

"Rl*l%qF02:apple is my favorite food.
P9[@ ju3RKOV04:this dress doesn't fit me.ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台!N?#{Ob K
10:motorcycle is cheap than car.ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台~+~ j+I1sB H ^
12:the symbol '*' is represented as star.ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台8\RH\3E-[.K?I
18:google is the best tools for search keyword.
qB/z;|2I@ Lo019:goooooogle yes!
T+zWFBA w~9U7F7I020:go! go! Let's go.
-C$]vc/W-]0woody@xiaoc:~/tmp$ ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台HEVV x5qXY$m

EM:ad x+] B0
搜索开头不是英文字母的行
Y_Gw-l8wo0woody@xiaoc:~/tmp$ grep -n
'^[^a-zA-Z]' regular_express.txt
/SjW.WM]?01:"Open Source" is a good mechanism to develop programs.
3D%GAf[v]S021:#I am VBird
Zbnu#v;y%eQ0woody@xiaoc:~/tmp$
jGE8[$S!oM0ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台F2V |XCAU
$表示它前面的串是在行的结尾,比如 '/.' 表示 . 在一行的结尾
/@z!ICc%l2q0
搜索末尾是.的行ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台x$N.soR-xA%d
woody@xiaoc:~/tmp$ grep -n
'/.$' regular_express.txt //. 是正则表达式的特殊符号,所以要用/转义
_:[?)sl01:"Open Source" is a good mechanism to develop programs.ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台#m m`e!{i"r
2:apple is my favorite food.
"hjn_'n1X[ab03:Football game is not use feet only.ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台 i$yLeS1F:vhb
4:this dress doesn't fit me.
k~!G \ W7R05:However ,this dress is about $ 3183 dollars.ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台/u1hxgqN0n e*?3o
6:GNU is free air not free beer.ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台3{w u+N6h
.....
GOZ\l2h Q0
nf1s5t$u_4l0
注意在MS的系统下生成的文本文件,换行会加上一个 ^M 字符。所以最后的字符会是隐藏的^M ,在处理WindowsET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台XOp$TU\%M
下面的文本时要特别注意!ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台#DP"X p3v:k x?
可以用cat dos_file | tr -d '/r' > unix_file 来删除^M符号。 ^M==/r
ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台 RO2a%s-p1]E

1@ _$ka"{0那么'^$' 就表示只有行首行尾的空行拉!ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台LR'{6Zn0~%sJ_!F
搜索空行ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台n8{ yS2Cv/C_,\
woody@xiaoc:~/tmp$ grep -n '^$' regular_express.txt

6Z$Sg1~6Q022:
9t5`D#p|H4aY0E*O023:
ML B4P)E+F9P0woody@xiaoc:~/tmp$
Ny$t#C'w3Q H T0
c9mw.\I/c1~v5P&x4M0{0
搜索非空行
0b.n?nu0woody@xiaoc:~/tmp$ grep -vn '^$' regular_express.txt
ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台3O$jxd"m I@ nK
1:"Open Source" is a good mechanism to develop programs.
Ogb[0Y+\E6ln02:apple is my favorite food.ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台#Z-d*v zsy.PY8h
3:Football game is not use feet only.
+K@2{'W_ {:z%w Hi04:this dress doesn't fit me.ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台%D~(i4Vy,cf8gl
..........ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台U/p's*FLi6V

0mw,MH)o)g[0
任意一个字符. 与重复字符 *ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台B2~'mA9A#{%S)~7O
ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台b?t3Z _9s
在bash中*代表通配符,用来代表任意个 字符,但是在正则表达式中,他含义不同,*表示有0个或多个 某个字符。ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台9Tt/SKwS&uTN
例如 oo*, 表示第一个o一定存在,第二个o可以有一个或多个,也可以没有,因此代表至少一个o.
[ S L(o"g g0
L QAvW-?0点. 代表一个任意字符,必须存在。 g??d 可以用 'g..d' 表示。 good ,gxxd ,gabd .....都符合。

#De9F q0z)b0bT0ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台D C2xc7H;|!|
woody@xiaoc:~/tmp$ grep -n 'g..d' regular_express.txt ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台 X"j xt*y,l*Cs,a F1@
1:"Open Source" is a good mechanism to develop programs.ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台 Z+C8S/I @tD
9:Oh! the soup taste good!ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台[TN*S*uI/@6J\;c2f _
16:The world is the same with 'glad'.
a)u*C'~ [`G0woody@xiaoc:~/tmp$
0l*BsM*U5kM|B0ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台{"gl_ Xmz7Y
搜索两个o以上的字符串
[ HX.h6KH hb-G0woody@xiaoc:~/tmp$ grep -n 'ooo*' regular_express.txt //前两个o一定存在,第三个o可没有,也可有多个。
ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台E.R z g z*e
1:"Open Source" is a good mechanism to develop programs.
+h\`#vV;Lu02:apple is my favorite food.
9@]#?4eT03:Football game is not use feet only.
p&u"V/I.CX$Etu09:Oh! the soup taste good!
2Bn!iElM5x018:google is the best tools for search keyword.
1r/wbr'^019:goooooogle yes!
;n\\B"YY0
.aDI(ud(?%l0搜索g开头和结尾,中间是至少一个o的字符串,即gog, goog....gooog...等
Bn6XiZ!hi0
woody@xiaoc:~/tmp$ grep -n 'goo*g' regular_express.txt ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台:\ P#O0g*Bi:k
18:google is the best tools for search keyword.ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台w5b CV}
19:goooooogle yes!ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台4~4R8Fv.qo'slo
ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台W8y0Zs ke
搜索g开头和结尾的字符串在的行ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台'D:Y,S3q+w5K
woody@xiaoc:~/tmp$ grep -n 'g.*g' regular_express.txt //
.*表示 0个或多个任意字符ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台u3M\:P"M
1:"Open Source" is a good mechanism to develop programs.
$\.yiRK*H014:The
gd software is a library for drafting programs.ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台Uz/iq&S,gV^ @!u
18:
google is the best tools for search keyword.
mgvzlx019:
goooooogle yes!
l\5_-ew*]2kO9O8R0~z020:
go! go! Let's go.
Z!}'d]6Nx&}(Os0
f%m"HM \;IEM0
ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台'\!i&Nhn u:G^a
限定连续重复字符的范围 { }
ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台9zs;zv%sIp5s*T:X
. * 只能限制0个或多个, 如果要确切的限制字符重复数量,就用{范围} 。范围是威尼斯人线上娱乐用,隔开 2,5 表示2~5个,
;SSOy9Y3C-h02表示2个,2, 表示2到更多个ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台$?K tJ4{+BoLd
注意,由于{ }在SHELL中有特殊意义,因此作为正则表达式用的时候要用/转义一下。

4h)_V WR$M0ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台` TK w%["Eih
搜索包含两个o的字符串的行。
.^xf/s%U IR`:G:Q0woody@xiaoc:~/tmp$ grep -n 'o/{2/}' regular_express.txt
ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台{A$s QI
1:"Open Source" is a good mechanism to develop programs.ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台-}"M#{0HV7Z2epU
2:apple is my favorite food.ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台Y0GeY X E{9q
3:Football game is not use feet only.
_YP/]S u09:Oh! the soup taste good!
)f$HK"O \qEHuI018:google is the best tools for search keyword.ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台9\.MR"l7Lo
19:goooooogle yes!
R e._ oy#U"B6g,X%\3Y0ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台-oa*m;Q~$Y[~6r
搜索g后面跟2~5个o,后面再跟一个g的字符串的行。
$t5| aF%i0P j#|0woody@xiaoc:~/tmp$ grep -n 'go/{2,5/}g' regular_express.txt ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台#hb;J+pW#I
18:google is the best tools for search keyword.
sY#sO0Lx:C*T0ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台wQ7l,d\+r
ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台P&Q5m)m^sgV
搜索包含g后面跟2个以上o,后面再跟g的行。。ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台.C5X9],B!ey
woody@xiaoc:~/tmp$ grep -n 'go/{2,/}g' regular_express.txt

T3|H:B/F eAN[t[018:google is the best tools for search keyword.
)kfb*u4x@`G019:goooooogle yes!ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台E3Jl#^!e(C

8OQ5{%CN0
ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台zF1O+o[
注意,相让[]中的^ - 不表现特殊意义,可以放在[]里面内容的后面。ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台}!x/]G6\
'[^a-z/.!^ -]' 表示没有小写字母,没有. 没有!, 没有空格,没有- 的 串,注意[]里面有个小空格。
ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台8?$_K%G!@W

7m/e.[f\~0另外shell 里面的反向选择为[!range], 正则里面是 [^range]

HU_ grk)w't0
9Q;Q"J2xu0~ p%p{0ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台1AQE`.J*_8gHK
2扩展正则表达式
:]J Pn"J0G0ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台5w5Z+e4yz6t5W
扩展正则表达式是对基础正则表达式添加了几个特殊构成的。
Y.{ZgNm-J0它令某些操作更加方便。ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台+a q-C8lp;`D
比如我们要去除 空白行和行首为 #的行, 会这样用:
wqw%y&S0
woody@xiaoc:~/tmp$ grep -v '^$' regular_express.txt | grep -v '^#'ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台\ c8]p/W G?lu-sk+R
"Open Source" is a good mechanism to develop programs.
H o(w-A%~ @ j0apple is my favorite food.ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台4Hy7kK v+b7I9`
Football game is not use feet only.ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台CpD1e4n T7UT i
this dress doesn't fit me.
V,pDJ,M&|-VO!|0............
BldChIz3v0
mnzf$S\NX0然而使用支持扩展正则表达式的 egrep 与扩展特殊符号 | ,会方便许多。
6~n8l&EW7GA8q0注意grep只支持基础表达式, 而egrep 支持扩展的, 其实 egrep 是 grep -E 的别名而已。因此grep -E 支持扩展正则。ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台 f!K"AOYi(xb
那么:
rLJ%GO4]0
woody@xiaoc:~/tmp$ egrep -v '^$|^#' regular_express.txt ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台2y7QEu'R;w7l.OC;\1j
"Open Source" is a good mechanism to develop programs.
_Eng1^[z4[ H*B0apple is my favorite food.
)l x9xf+YV,K%{0Football game is not use feet only.ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台7PG)a0| yc-ll9S
this dress doesn't fit me.ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台`Y9z#o/\&k
....................
G1}6WVT0
这里| 表示或的关系。 即满足 ^$ 或者 ^# 的字符串。ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台Syby7V8Bj}#y6`~
ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台[}0R/tmI.I5`/v{
这里列出几个扩展特殊符号:ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台i[w2t$M}
+, 于 . * 作用类似,表示 一个或多个重复字符。
p1XCjY o;g(U0?, 于 . * 作用类似,表示0个或一个字符。ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台!@9P,S:O5y6sIHKV D
|,表示或关系,比如 'gd|good|dog' 表示有gd,good或dog的串
|[l*unM0(),将部分内容合成一个单元组。 比如 要搜索 glad 或 good 可以这样
'g(la|oo)d'
,b W3|/H&h0()的好处是可以对小组使用 + ? * 等。ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台SX3e&]&B5oSM
比如要搜索A和C开头结尾,中间有至少一个(xyz) 的串,可以这样 :
'A(xyz)+C'
ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台#}w:}}Vjl FZ

oY J m)e a+Z~]r&h8t0ref:

aS,[H\ sjf3v0

l6FJ'w9kKN0http://blog.csdn.net/tenfyguo/article/details/6387786

zSi;nV8a0

^hME$pAC;L1Oa3A0 ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台wGw5|h3P;q\6{

hZ%e$iZ.dP0 ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台ql6a/H!m#fB&B7n

,^o\ K:k.b0 

Bp7A"?X0

A yuC`+M0 

Xb/u$[~Atp0

TAG: shell utility

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

Open Toolbar
博聚网