2009年2月5日 星期四

正規表示法

正規表示法RE

1. ^開頭字串

2. 結尾字串$

3. . 任意字元

4. [字元集合] => 取一個字元 ex: [0-9]

5. [^字元集合] => 反集合取一字元

6. \{n\} => 出現n次

7. \{n,m\} => 出現n~m次

8. \跳托字元

9.* 表示0~多個字元
? 表示0或1次
+ 表示 >=1 次以上 這是擴充型 要用egrep

10. \<單字\> 找文章單字用的
\< 開頭單字
\> 結尾單字

ex: 找 ip
192.168.32.44
grep '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}' XXX

ex: 找電話
0944-123456
grep '09[0-9]\{2\}-[0-9]\{6\}' XXX

ex: 日期 月-日-年
12-22-97
grep '[01][0-9]-[0-3][0-9]-[0-9]\{\2}' XXX

ex: 日期 月-日-年 改成 年-月-日
用()來區分項次
12-22-97
sed 's/RE/新字串/'
sed 's/\([01][0-9]\)-\([0-3][0-9]\)-\([0-9]\{\2}\)/\3-\1-\2/' XXX

ex:日期 沒加g只會改第一個
12-22-97 09-15-98
sed 's/RE/新字串/g'
sed 's/\([01][0-9]\)-\([0-3][0-9]\)-\([0-9]\{\2}\)/\3-\1-\2/g' XXX

ex:電話 02-21234567 改成(02)21234567
sed 's/\(02\)-\([0-9]\{8\}\)/(\1)\2/g' XXX


ex:電話 02-21234567 改成(02)2123-4567
sed 's/\(02\)-\([0-9]\{4\}\)\([0-9]\{4\}\)/(\1)\2-\3/g' XXX

ex:e-mail 帳號@字串.xxx.xxx (xxx可能好幾次)
grep '[a-z,A-Z,0-9][a-z,a-Z,0-9,_,.]*@[a-z,A-Z,0-9].*\..*' test1


================
grep

-n 顯示列號

-c 顯示列數

-i 忽略大小寫

-l 只顯示檔名

-o 只顯示比對到的RE

-v 顯示不符合的

沒有留言:

張貼留言