正则三剑客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的行然后打印第一字段内容

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值