简单的正则表达式
来源:互联网 发布:董小飒淘宝店损失 编辑:程序博客网 时间:2024/06/10 18:39
1.grep/egrep工具的使用
grep【-cinvABC】 'world' filename
-c:打印符合要求的行数
-i:表示忽略大小写
-n:表示输出符合要求的行及其行号
-v:表示打印不符合要求的行
-A:后面跟一个数字a,表示打印符合要求的行以及下面的a行
-B:后面跟一个数字a,表示打印符合要求的行以及上面的a行
-C:后面跟一个数字a,表示打印符合要求的行以及上下各a行
在正则表达式中,^表示行的开始,$表示行的结尾,那么空行可以用^$表示,但【^字符】表示除【】内字符之外的字符;
^[^a-zA-B]:代表非字母开头;
.:任意一个字符
*:表示零个或多个前面的字符——ooo*:表示 oo、ooo...
{n1,n2}:表示前面字符重复的词数,{ }要加上脱义字符\---\{n\};其中 n1小于 n2,表示前面的字符重复 n1 到 n2 次(如果能重复大于n2次则也代表 重复了n2次),n2 可以为空,表示大于等于 n1 次
--------------------------------------------------------------------------------------------
egrep:
筛选 一个或多个前面的字符:c+,c代表一个字符
筛选零个或多个前面的字符:c?,c代表一个字符
筛选字符串1或者字符串2:string1|string2|string3
( ):表示一个整体,(00)+就表示 一个oo 或者多个 oo
2.sed工具的使用
打印某行(-n ... p):sed -n 'n'p filename:单引号内是一个数字,表示第几行--打印(p)这行,也可以用 '1,$',表示所有行
过滤筛选:sed -n '/words/'p filename ——把筛选的条件放在 / /之中
用 -e 参数可以实现多个行为 sed -e '1'p -e '/111/'p -n filename
删除(d)某行或多行:sed 'n'd filename (实际文件中并没有被删除,只是没有显示出来)
还可以删除匹配某个字符的行:sed '/words/'d filename
替换字符或者字符串:sed '1,2s/ot/to/g' filename
s就是替换动作,g表示本行全局替换,如果不加g则表示本行出现的第一个,出了用 /作为分隔符还可以用#、@(当内容里本身带有/时,可以用其他字符来作为分隔符)
也可以作为删除动作,把要删除的内容替换为空
调换两个字符串的位置:sed 's/\(rot\)\(.*\)\(bash\)/\3\2\1' filename ---把rot 和 bash调换位置(这两个单词分别为一行的前后)
小括号--整体,但是需要转义字符
添加内容:sed 's/^.*$/&aaa、' filename 在末尾添加,如果是aaa&,则是每行前添加
直接修改文件内容:sed -i 's/ot/to/g' filename
最好先备份
如何在一个字符串中确定一个数??
这个数的前后紧接的字符都不为一个数字
3.awk工具的使用
awk是流式编辑器,针对文档中的行进行操作,一行一行的执行,awk兼具sed的所有功能
awk :
选项-F 'a':后面跟分隔符,如果不加此选项,默认为空格后者tab
'{print $n}':表示打印某个字段,n为数字,当为0时,代表打印整行,print为打印动作,但要用{ }括起来,print还可以打印自定义内容,但是要用 双引号括起来 {print $1“heh”$2}
匹配字符或字符串 : ‘/words/’
匹配某个段:awk -F ':' '$1 ~/worlds/' filename——~:为匹配,$指示第几个字段
多次匹配: awk -F ‘;' '/worlds1/ {print $n1} /worlds2/ {print $n2}' filename ——先匹配wolds1 打印出结果,再匹配worlds2 ,再打印出结果,虽然最后是一起打印,可是先匹配的打印出来的在下面
条件操作符
条件要用单引号括起来
awk中可以用逻辑符号进行判断,数字加上双引号则表示字符
==:等于 > < >= < <= !=
还可以用逻辑运算符 && ||
内置变量
NF:为分隔后一共有多少段 {print NF}
NR:表示行号
$NF:表示最后一段的值
NR还可以作为判断条件,还可以配合段匹配一起使用
awk中的数学运算
更改段值awk -F ':' '$1="newvalue"'
对各个段值进行运算 ,
计算某个段的总和:
awk -F ':' ’{(tot=tot+$n);END {print tot}‘ filename
END是awk的语法,表示所有的行都已经执行
awk中还可以使用 if 、for
分隔符后的 单引号内是执行内容 ,可以是筛选条件也可以是设置,如果是筛选条件 符合条件的打印出来,如果需要打印变量或者 相应字段,则需要用大括号加print
0 0
- 简单的正则表达式
- 简单的正则表达式
- 简单的正则表达式
- 正则表达式的简单介绍
- 几个简单的正则表达式
- 正则表达式的简单应用
- 简单的Java正则表达式
- 简单的正则表达式实现
- 简单的正则表达式 Regex
- 正则表达式的简单使用
- 简单的正则表达式记录
- 正则表达式的简单应用
- 简单的正则表达式引擎
- 正则表达式的简单梳理
- 简单的正则表达式匹配
- 简单的正则表达式记录
- 正则表达式的简单运用
- 正则表达式的简单介绍
- HDOJ 1059 Dividing (多重背包二进制优化转01背包)
- 数据结构和算法是程序的根本——为什么?!
- HDOJ 2055 An easy problem
- C Primer Plus10-7
- ProtoBuf 常用序列化/反序列化API
- 简单的正则表达式
- Android中关于FTP的文件上传和下载
- Android图片压缩工具类
- 入门动画篇之UIview动画(一)
- Matlab 通过一个方程得到关于某个变量的函数
- hadoop、hbase、hive、zookeeper版本对应关系
- C Primer Plus10-8
- C++ inline的一点理解
- VC6编程弹出UAC窗口