正则表达式grep sed awk总结
1.grep命令總結(jié)
[root@cacti?~]#?cat?zh888.txt??//查看zh888.txt內(nèi)容
123
456
abc
def
def
[root@cacti?~]#?grep?-c?"123"?zh888.txt?//打印123的行數(shù)為1行
1
[root@cacti?~]#?echo?"123456">>zh888.txt?//在追加123456到zh888.txt文本中
[root@cacti?~]#?grep?-c?"123"?zh888.txt??//打印123的行數(shù)變?yōu)?
2
[root@cacti?~]#?grep?-v?"123"?zh888.txt?//把123行不打印出來
456
abc
def
def
[root@cacti?~]#?grep?-n?"123"?zh888.txt?//輸出內(nèi)容和行數(shù)
1:123
6:123456
[root@cacti?~]#?grep?[0-9]?zh888.txt?//grep0-9的數(shù)字
123
456
123456
[root@cacti?~]#?grep?-v?[0-9]?zh888.txt?//去掉0-9
abc
def
def
[root@cacti?~]#?grep?'^1'?zh888.txt???//,”^”表示行的開始,”$”表示行的結(jié)尾,那么空行則表示”^$”,
123
123456
[root@cacti?~]#?grep?'f$'?zh888.txt?//過濾f結(jié)尾的內(nèi)容
def
def
[root@cacti?~]#?grep?'^[^a-zA-Z]'?zh888.txt?//把數(shù)字全部過濾出來
123
456
123456
456789
234567
[root@cacti?~]#?grep?'1..4'?zh888.txt????//“.”表示任意一個字符,上例中,就是把符合r與o之間有兩個任意字符的行過濾出來。
123456
[root@cacti?~]#?grep?'123*'?zh888.txt?????//“*”表示零個或多個前面的字符。
123
123456
[root@cacti?~]#?grep?'.*'?zh888.txt???//‘.*’表示零個或多個任意字符,空行也包含在內(nèi)。
123
456
abc
def
def
123456
456789
234567
2.sed的命令總結(jié)
[root@cacti?~]#?sed?-n?'1'p?zh888.txt??//打印zh888.txt第一行內(nèi)容
123
[root@cacti?~]#?sed?-n?'1,3'p?zh888.txt?//打印1-3行的內(nèi)容
123
456
abc
[root@cacti?~]#?sed?-n?'/abc/'p?zh888.txt?//打印包含abc的字符串內(nèi)容
abc
[root@cacti?~]#?sed?-n?'/^1/'p?zh888.txt?//打印1開頭的內(nèi)容
123
123456
[root@cacti?~]#?sed?-n?'/6$/'p?zh888.txt?//打印6結(jié)尾的內(nèi)容
456
123456
[root@cacti?~]#?sed?-n?'/1..4/'p?zh888.txt?//打印1..4的任意內(nèi)容
123456
[root@cacti?~]#?sed?-n?'/23*/'p?zh888.txt??//大衣呢23結(jié)尾的任意內(nèi)容
123
123456
234567
[root@cacti?~]#?sed?-e?'1'p?-e?'/123/'p?-n?zh888.txt?//打印123開頭的內(nèi)容
123
123
123456
[root@cacti?~]#?sed?'1'd?zh888.txt?//刪除第一行內(nèi)容
456
abc
def
def
123456
456789
234567
[root@cacti?~]#?sed?'2,$'d?zh888.txt?//刪除2到結(jié)尾的所有內(nèi)容
123
[root@cacti?~]#?sed?'1,3'd?zh888.txt?//刪除1到3的內(nèi)容
def
def
123456
456789
234567
[root@cacti?~]#?sed?'/123/'d?zh888.txt?//刪除123的內(nèi)容
456
abc
def
def
456789
234567
[root@cacti?~]#?sed?'1,2s/123/888/g'?zh888.txt?//1到2行的123替換成888以全局替換,/可以換成#或者@都是可以的。
888
456
abc
def
def
123456
456789
234567
[root@cacti?~]#?sed?'s/[0-9]//g'?zh888.txt?//把0到9數(shù)字全部過濾掉
abc
def
def
[root@cacti?~]#?sed?'s/[a-zA-Z]//g'?zh888.txt?//吧a-zA-Z的字母全部替換掉
123
456
?
123456
456789
234567
3.awk命令總結(jié)
[root@cacti?~]#?echo?"1:2:3">>zh888.txt?//添加內(nèi)容到zh888中去
[root@cacti?~]#?echo?"4:5:6:7">>zh888.txt?//添加內(nèi)容到zh888中區(qū)
[root@cacti?~]#?tail?-n2?zh888.txt?|awk?-F':'?'{print?$1}'?//查看末尾2行利用管道和分隔符打印第一段字段內(nèi)容。
1
4
[root@cacti?~]#?tail?-n2?zh888.txt?|awk?-F':'?'{print?$1"zh888"$2"zh888"}'?//在第一字段和第二字段末尾加上zh888
1zh8882zh888
4zh8885zh888
[root@cacti?~]#?tail?-n2?zh888.txt?|awk?-F':'?'{print?"zh888"$1}'?//在第一字段前面添加zh888內(nèi)容
zh8881
zh8884
[root@cacti?~]#?awk?'/123/'?zh888.txt?//查找123內(nèi)容
123
123456
[root@cacti?~]#?awk?-F':'?'$1~/7/'?zh888.txt??//讓awk來匹配第一段7開頭的數(shù)字
456789
234567
?
[root@cacti?~]#?awk?-F':'?'/1/?{print?$2}?/2/?{print?$3}'?zh888.txt?//利用awk連續(xù)匹配
2
3
[root@cacti?~]#?awk?-F':'?'$2=="5"'?zh888.txt
4:5:6:7
//利用邏輯判斷等于來判斷第二字段是否是5然后打印出來,awk中是可以用邏輯符號判斷的,比如’==’就是等于,也可以理解為“精確匹配”。另外也有’>’,?‘>=’,?‘<’,?‘<=’,?‘!=’?等等,值得注意的是,即使$3為數(shù)字,awk也不會把它當(dāng)數(shù)字看待,它會認(rèn)為是一個字符。所以不要妄圖去拿$3當(dāng)數(shù)字去和數(shù)字做比較。
[root@cacti?~]#?awk?'{print?NR}'?zh888.txt?//利用分隔符分割一共多少段
1
2
3
4
5
6
7
8
9
10
[root@cacti?~]#?awk?'{print?NF}'?zh888.txt?//一共有多少行
1
1
1
1
1
1
1
1
1
1
[root@cacti?~]#?awk?'NR>=5'?zh888.txt?//大于5的行數(shù)打印出來
def
123456
456789
234567
1:2:3
4:5:6:7
本文轉(zhuǎn)自zh888 51CTO博客,原文鏈接:http://blog.51cto.com/zh888/1401355,如需轉(zhuǎn)載請自行聯(lián)系原作者
總結(jié)
以上是生活随笔為你收集整理的正则表达式grep sed awk总结的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 使用Throwable获得栈信息
- 下一篇: linux 运维shell习题