正则表达式,grep,sed,
答案詳見:http://www.cnblogs.com/linhaifeng/p/6596660.html
作業一:整理正則表達式博客
?
| ^ # 行首定位 $ # 行尾定位 . # 匹配除換行符以外的任意字符 * # 匹配0或多個重復字符 + # 重復一次或更多次 ? # 重復零次或一次 ? # 結束貪婪因子 .*? 表示最小匹配 [] # 匹配一組中任意一個字符 [^] # 匹配不在指定組內的字符 \ # 用來轉義元字符 < # 詞首定位符(支持vi和grep) <love> # 詞尾定位符(支持vi和grep) love> x\{m\} # 重復出現m次 x\{m,\} # 重復出現至少m次 x\{m,n\} # 重復出現至少m次不超過n次 X? # 匹配出現零次或一次的大寫字母 X X+ # 匹配一個或多個字母 X () # 括號內的字符為一組 (ab|de)+ # 匹配一連串的(最少一個) abc 或 def;abc 和 def 將匹配 [[:alpha:]] # 代表所有字母不論大小寫 [[:lower:]] # 表示小寫字母 [[:upper:]] # 表示大寫字母 [[:digit:]] # 表示數字字符 [[:digit:][:lower:]] # 表示數字字符加小寫字母 ? 元字符 ? \d # 匹配任意一位數字 \D # 匹配任意單個非數字字符 \w # 匹配任意單個字母數字下劃線字符,同義詞是 [:alnum:] \W # 匹配非數字型的字符 ? ? ? 字符類:空白字符 ? \s # 匹配任意的空白符 \S # 匹配非空白字符 \b # 匹配單詞的開始或結束 \n # 匹配換行符 \r # 匹配回車符 \t # 匹配制表符 \b # 匹配退格符 \0 # 匹配空值字符 ? ? ? 字符類:錨定字符 ? \b # 匹配字邊界(不在[]中時) \B # 匹配非字邊界 \A # 匹配字符串開頭 \Z # 匹配字符串或行的末尾 \z # 只匹配字符串末尾 \G # 匹配前一次m//g離開之處 ? ? 捕獲 ? (exp) # 匹配exp,并捕獲文本到自動命名的組里 (?<name>exp) # 匹配exp,并捕獲文本到名稱為name的組里,也可以寫成(?'name'exp) (?:exp) # 匹配exp,不捕獲匹配的文本,也不給此分組分配組號 ? ? ? 零寬斷言 ? (?=exp) # 匹配exp前面的位置 (?<=exp) # 匹配exp后面的位置 (?!exp) # 匹配后面跟的不是exp的位置 (?<!--exp) # 匹配前面不是exp的位置 (?#comment) # 注釋不對正則表達式的處理產生任何影響,用于注釋 ? ? ? 特殊字符 ? http://en.wikipedia.org/wiki/Ascii_table ^H \010 \b ^M \015 \r 匹配特殊字符: ctrl+V ctrl不放在按H或M 即可輸出^H,用于匹配 --></name></love> |
?
作業二:grep作業(正則表達式及字符處理)
目標文件/etc/passwd,使用grep命令或egrep
1.顯示出所有含有root的行:
grep "root" /etc/passwd
2.輸出任何包含bash的所有行,還要輸出緊接著這行的上下各兩行的內容:
grep -C 2 "bash" /etc/passwd
3. 顯示出有多少行含有nologin。
?
[root@python_lb yan]# grep -c "nologin" /etc/passwd
?
4.顯示出那些行含有root,并將行號一塊輸出。
?
[root@python_lb yan]# grep -n "root" /etc/passwd
?
5.顯示出文件中
6.新建用戶
abominable
abominate
anomie
atomize
編寫正則表達式,將他們匹配出來
?
[root@python_lb yan]# egrep '^a[a-z]+e' passwd
7.建四個用戶
Alex213sb
Wpq2222b
yH438PIG
egon666
egon
過濾出用戶名組成是字母+數字+字母的行
[root@python_lb yan]# grep -Eni '^[a-Z]+[0-9]+[a-Z]+' passwd
53:Alex213sb:x:1005:1005::/home/Alex213sb:/bin/bash
54:Wpq2222b:x:1006:1006::/home/Wpq2222b:/bin/bash
55:yH438PIG:x:1007:1007::/home/yH438PIG:/bin/bash
8.顯示出/etc目錄下所有包含root的文件名
?
[root@python_lb yan]# mkdir /etc/root
[root@python_lb yan]# mkdir /etc/1root
[root@python_lb yan]# mkdir /etc/root2
[root@python_lb yan]# ls /etc/|grep root
[root@python_lb yan]# ls /etc/*root*
?
9. 過濾掉/etc/ssh/sshd_config內所有注釋和所有空行
[root@python_lb yan]# grep -v "^$" /etc/ssh/sshd_config|grep -v "^#"
作業三:Sed作業:以/etc/passwd文件為模板
1,刪除文件每行的第一個字符。
?
[root@python_lb yan]# sed -r 's/^([a-Z0-9-])([a-Z0-9-]+)/\2/g' passwd
?
2,刪除文件每行的第二個字符。
?
[root@python_lb yan]# sed -r 's/^([a-Z0-9-])([a-Z0-9-])([a-Z0-9-]+)/\1\3/g' passwd
?
3,刪除文件每行的最后一個字符。
?
[root@python_lb yan]# sed -r 's/([a-Z]+)[a-Z]$/\1/g' passwd
?
4,刪除文件每行的倒數第二個字符。
?
[root@python_lb yan]# sed -r 's/^(.*)(.)(.)$/\1\3/g' passwd
?
5,刪除文件每行的第二個單詞。
?
[root@python_lb yan]# sed -r 's/^([a-Z]+)([^a-Z]+)([a-Z]+)([^a-Z]+)/\1\2\4/g' passwd
[root@python_lb yan]# sed -r 's/^([a-Z0-9-]+)([^a-Z]+)([a-Z]+)([^a-Z]+)/\1\2\4/g' passwd
?
6,刪除文件每行的倒數第二個單詞。
?
[root@python_lb yan]# sed -r 's/([a-Z]+)([^a-Z]+)([a-Z]+)$/\2\3/g' passwd
?
7,刪除文件每行的最后一個單詞。
?
[root@python_lb yan]# sed -r 's/([^a-Z]+)([a-Z]+)$/\1/g' passwd
?
8,交換每行的第一個字符和第二個字符。
?
[root@python_lb yan]# sed -r 's/(^[a-Z])([a-Z])/\2\1/g' passwd
?
9,交換每行的第一個字符和第二個單詞。
?
[root@python_lb yan]# sed -r 's/(^[a-Z])([a-Z0-9-]+)([^a-Z]+)([a-Z]+)/\4\2\3\1/g' passwd
?
10,交換每行的第一個單詞和最后一個單詞。
?
sed -r?'s/([a-Z]+)(.*)([^a-Z]+)([a-Z]+)$/\4\2\3\1/'?passwd
11,刪除一個文件中所有的數字。
?sed -r?'/[0-9]+//g'?passwd
12,刪除每行開頭的所有空格。
?sed -r?'s/^ *//g'?passwd
13,用制表符替換文件中出現的所有空格。
?sed -r?'s/ /\t/g'?/etc/passwd
14,把所有大寫字母用括號()括起來。
sed -r?'s/[A-Z]/(&)/g'?/etc/passwd ?
15,打印每行3次。
?sed?'p;p'?/etc/passwd
?16,只顯示每行的第一個單詞。
?
sed?'1~2d'?/etc/passwd17,打印每行的第一個單詞和第三個單詞。
?
18,用命令獲取格式為 mm/yy/dd 的日期格式,結合管道,將其換成 mm;yy;dd格式
?
?
轉載于:https://www.cnblogs.com/Baby-Lady/p/6600054.html
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的正则表达式,grep,sed,的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android 获取外网IP,实测有效
- 下一篇: Windows mosek