正则三剑客grep, sed, awk复习记录

Posted fanchenxinok

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了正则三剑客grep, sed, awk复习记录相关的知识,希望对你有一定的参考价值。

正则表达式字符列表:

\\转义字符(ex: "\\/home\\/test\\/" 表示"/home/test")
.匹配任意单个字符 (ex: "a.b"可匹配 "aab" "abb" "acb"....)
*匹配在它之前一个字符的任意个数或0个 (ex: "a*b" 可匹配 "ab" "aab" "aab" "aaab"...)
^在行开头匹配它后面的正则表达式 (ex: "^ab" 表示以ab开头的行)
$在行末尾匹配它前面的正则表达式 (ex: "ab$"表示以ab结尾的行)
[a-z]/[A-Z]匹配a~z的小写字母或A-Z的大写字母
[0-9]匹配0~9之间的数字
[^....]匹配除了^后面的字符 (ex: "[^0-9]"表示匹配除了0~9数字的字符)
\\n,m\\区间表达式,匹配它前面的字符重现n至m次,\\n\\重现n次,\\n,\\至少重现n次(ex: "abc\\4,10\\"表示c字符重复4到10次)
(xxx)用于表示一个子模式,最多可以存储9个独立的子模式在一个模式中。可以用\\1至\\9指定这9个模式。(ex: "(ab).*\\1"匹配一行中出现2次ab)括号前面都要加\\斜杠
+匹配前面正则表达式的一个或多个实例 (ex: "[0-9]+" 表示至少一个数字)
匹配前面正则表达式的0个或一个实例 (ex: "[0-9]?"表示0个或1个数字)
|匹配|号前面或后面的正则表达式 (ex: "ab|cd"表示出现ab或cd的行)
.*.*可以表示任意数量的任意字符 (ex: "([\\'\\"]).*\\1" 表示匹配用单引号或双引号括起来的字符串)
^$表示空行

特殊字符集:

[:alnum:]字母和数字alpha+num[:graph:]非空格字符
[:alpha:]字母字符[:lower:]小写字母
[:blank:]空格与tab字符[:print:]可显示的字符
[:cntrl:]控制字符[:punct:]标点符号
[:digit:]数字字符[:space:]空白字符
[:xdigit:]十六进制数字[:upper:]大写字母

一,grep/egrep (grep -E)命令:

grep -ri "abc" 在当前目录下递归查找包含abc(忽略大小写)的文件

二,sed命令:

(1)替换:

         sed 's/old/new/g'  test.txt   将test.txt文件中old全局(g)替换为new

         sed -e 's/abc/def/g' -e 's/hij/klm/g' test.txt 连续执行两次替换命令

         sed '/abc/!s/def/abc/g' test.txt 将没有abc的行的def替换为abc

         pwd | sed 's;\\/;\\\\;g'   sed也可以用其他符合作为分隔符,将当前目录的/变为\\ (/home/abc/ ==> \\home\\abc\\)

(2) 打印: 

         sed -n '/abc/, /def/'p  test.txt 打印有abc的行到有def行之间的所有行

         sed -n '10,20p' test.txt 打印10到20行的内容

         sed -n '/abc/p' test.txt 打印包含abc的行

 

(3)删除

         sed '/^$/d' test.txt 删除空行

补充:

          

\\u把首字母转化为大写
\\l把首字母转化为小写
\\U把字符串转化为大写
\\L把字符串转化为小写
\\b

匹配一个单词边界,单词与空格间的位置

 

&表示前面正则表达式匹配的内容 (ex: sed 's/abc/&def/' 将abc替换为abcdef)

例子:

          sed 's/\\b[a-z]/\\u&/g'  将每个单词的首字母转化为大写

三,awk命令:

awk -F: 'print $1, print $3'  test.txt      打印test.txt每行以冒号为分隔的第一和第三字段

awk -F: 'printf "%s size is %s\\n", $3, $1'

awk -F: '/abc/print $1'  首先筛选包含abc的行然后打印第一字段内容

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

以上是关于正则三剑客grep, sed, awk复习记录的主要内容,如果未能解决你的问题,请参考以下文章

正则与sed,grep,awk三剑客

正则表达式及三剑客(grep,awk,sed)详解

三剑客grep/sed/awk

awk,grep,sed三剑客

三剑客命令grep sed awk

正则表达式 三剑客--awk