您的位置:首页 > 其它

正则表达式

2018-02-25 14:52 274 查看

正则表达式

是一串有规律的字符串

grep

grep   ‘ abc123’ filename
`- c : 行数,可以用来计数,文本里出现多少次要找的字符串
`- i  : 不区分大小写
`- n : 显示行号
`- v: 取反
`- r : 遍历子目录以下的文件,遍历目录用 -r
`- A : 后面跟数字,过滤出符合要求的行以及下面的n行
`- B: 同上,过滤出符合要求的行以及上面的n行
`- C : 同上,同时过滤出符合要求的行以及上下各n行

元字符

`*`         前一个字符匹配 0 次或 任意 多次(星 号前一个字符不起作用)

`.`          匹配除了换行符外  点号前面的任意 一个 字符

`+`        表示1次到多次,\+也要脱义,否则用egrep

?         ?号前面的字符匹配1或者0次,\?也要脱义,否则用egrep

$         匹配行首,列如 ^hello 会匹配以 hello 开头的行

|          表示匹配多个字符  'root|nologin|aaa'

[ ]       匹配中括号指定的任意一个字符,只匹配一个字符
例如:[0-9]匹配任意一个数字,[a-z][0-9]匹配小写字母和一位数字构成的两位字符

[^]      匹配除了中括号的字符以外的任意一个字符
例如:[^0-9] 匹配任意一位非数字字符。
[^a-z] 表示任意一位非小写字符。

\         转移符,用于取消将特殊符号的含义取消

\{n\}    表示其前面的字符恰好出现n次
例如:[0-9]\{4\} 匹配4位数字
[1][3-8][0-9]\{9\} 匹配手机号码

\{n,\}    表示其前面的字符出现 不小于n 次
例如:[0-9]\{2,\} 表示两位以及以上的数字

\{n,m\}     表示其前面的字符出现 至少n 次,最多出现 m 次。
例如:[a-z]\{6,8\} 匹配6到8位的小写字母

egrep = grep -E   可以免去脱义符
egrep '{}'  = grep  '\{\}'  = grep -E '{}'

sed 文本替换

轻量级流编辑器,主要用来将数据进行选取,替换,删除,新增
`- r : 支持脱义

`- n : 一般会把所有的数据输出到屏幕上,如果加入n选项,只会输出已匹配的行,一般加入p 选项print

`- e : 加多命令编辑

`- i :  修改,修改已读数据文件,直接更改文件内容,sed -i  '1,5'd  1.txt
动作,加在 '字符串'后面的

`- I  : 不区分大小写

`- d : 删除指定行数 sed '1,10'd 1.txt  1-10行delete

`- a :追加,在当前行后添加一行或者多行

`- c  : 行替换,用c 后面的字符串替换原数据

`- i : 插入,在当前行前插入一行或者多行。d : 删除,g : 全局

`- p : 打印,输出指定的行

`- s : 字串替换,用一个字符串替换另一个字符串
'行范围s/旧字符串/新字符串/g'  g : 表示全局,不加就表示一行

awk

awk 工具 分段匹配
`- F 指定分割符
$1 表示 第一段, $0 表示所有
awk '{print $0}' 1.txt

awk '{print $1,$3,$7}' 1.txt
默认分隔符为空格,或者空白字符
`~`  匹配 后面的字符

也支持正则
支持多个表达式一起写
awk -F ':'  '/root|user '{print $0}' 1.txt

数学运算
$3 > 100    大于100
$3 == 100   等于100
$3 < 100     小于100
$3 >= 100  大于等于100
$3  != 100  不等于
$3 > "5" && $3 < "7"  大于5小于7  &&与,||或
{OFS="#"} 内置变量,指定print打印用到的分割符#
{NR}   行     'NR<=10' 前10行
{NF}   段     'NF==6' 第6段
{BEGIN} {END}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  正则 表达式