linux 正则表达式,sed使用
区别于正则,通配符一般用户命令行bash环境
- “ * ” 代表任意一个或者多个字符(一般代表所有字符)
- “?” 代表任意一个字符(注意按问好的个数匹配多少个字符)
- “;” 两个命令之间的分隔符
- “#” 配置问渐渐注释
- “|” 管道
- “~” 用户家目录
- “-” 上一次目录
- “$” 变量符
- “/” 路径分隔符号,也是根的意思
- “>” 或者 1> 重定向,覆盖原有数据内容
- ">>" 追加重定向,追加内容文件尾部。
- “<” 输入重定向
- “<<” 追加重定向
- ‘ ’ 单引号,不具有变量置换功能,输出时所见即所得。
- " " 双引号,具有变量直换功能,解析变量后输入 结果,不加引号相当于双引号。
` tab 上面的引号,两个
`中间为命令,会先执行,等价$()。- “{}” 中间为命令区块组合或被哦人能够序列
- “!” 逻辑运算种的“非”(not)
- “&&” and当前一个指令执行成功时,执行后一个指令
- “||” or当前一个指令执行失败时,执行后一个指令
- .. 上一个目录
- . 当前目录
正则表达式
linux 正则表达式一般以行为单位处理的。正则表达式和我们常用的通配符特殊字符是有本质的区别。
1,基础正则第一波字符说明
1)“^”,^word 匹配以word开头的内容。 vi/vim 编辑器里 ^ 代表一行的开头
2)"$" ,word$匹配以word结尾的内容。vi/vim 编辑器里¥代表一行的结尾
3)“^$” 表示空行
示例:(注意红色的是匹配的字符,匹配一个字符但是grep打印一行出来)
grep -n 打印出匹配的行,grep -v 排除匹配, -o 只输出匹配到的内容 不按行输出了
2,基础正则第二波字符说明:
4)"." 代表且只代表任意一个字符。
5) "\" 转移符号,. 就只代表点本身,让着有特殊身份意义的字符脱掉马甲,还原原型。
6)“*”重复 0个或多个前面的一个字符,例如*o 匹配没有o,有1个o或者多个oooo.
7) "." 匹配所有字符。 延申.以任意多个字符开头。.$以任意多个字符结尾。
示例:
匹配任意字符(注意其中没有空行)
匹配任意所有字符.
匹配包含oldb.y 的中间的任意字符
匹配任意一个字符结尾
匹配以.结尾的字符
匹配o 0个或者多个ooo 注意空行也匹配了 其实就是所有 但是意义不同
3,基础正则第三波字符说明
8)[abc] 匹配字符集合内的任意一个字符[a-zA-Z],[0-9]
9)[^abc] 匹配不包含^后的任意一个字符的内容 或a 或b 或c(注意中括号里^为取反,注意与中括号外面的区别 外面是^ 以什么开头)
10)a{n,m} 重复n到m次,前一个重复的字符。如果用egrep/sed -r 可以去掉斜线 或者-E ERE 模式
a{n,} 重复至少n次,前一个重复的字符。
a{n} 重复n次,前一个重复的字符。
a{,m} 最多m次
示例重复3次
重复至少3次
重复最多3次(注意0次也包含在内)
grep 一般常用参数:
-i 忽略大小写的不同,所以大小写视为相同
-n 匹配的内容在其行首显示行号
-v 反向选择,即显示没有‘搜索字符串的那一行’内容的那一行
-E 扩展的grep,即egrep
扩张正则表达式
使用的命令:grep -E 以及egrep
了解即可
1)+ 表示重复“一个或者一个以上”前面的字符(是0或者多个)
2)?表示重复“0个或一个”前面的字符
3)| 表示同时过滤多个字符串
4)()分组过滤,后向引用。
示例:重复0 一个或者多个( 可以包含0个) +
重复0个或者1个前面一个字符 ?(. 是有且只有一个)
过滤多个筛选条件 |
元字符
LINUX企业级正则实战:
1,取系统IP
第一种方法:()不用正则ifconfig eth0 | sed -n ‘2p‘ | sed ‘s#^.*inet##g‘ |sed ‘s#n.*##g‘ | sed ‘s#^ ##‘ ##sed -n ‘2p‘ 打印出第二行 sed ‘s#^.*inet##g‘ 匹配替换到 inet sed ‘s#n.*##g‘ 匹配 取消netmask 以后的数据 sed ‘s#^ ##‘ 去除空格 注意 ^.*inet ^.* 表示任意字符开头 匹配到 inet为止
第二种方法
sed -nr ‘s#支持正则的位置##gp‘ file(s前的2为行号)
sed - n ‘s#()()#\1\2#gp‘ file 当前面匹配的部分用小括号的时候,第一个括号内容,可以在后面部分1\输出。同理 \2 也一样
示例I an oldboy teacher ! sed -nr ‘1s#^.*n (.*) t.*$#\1#gp‘ ./oldboy.log ##-r 开启正则 1s 第一行 ^.*n 以任意字符开头到n空格结尾(.*) 表示里面匹配的内容oldboy teacher 过滤以空格t.* 任意字符结尾 \1 引用(.*)的配置匹配内容输出
取IP
ifconfig eth0 | sed -n -r ‘2s#^.*et (.*) n.*$#\1#gp‘
示例取644
stat /etc/hosts | sed -nr ‘4s#^.*\(0(.*)/-.*$#\1#gp‘
相关推荐
rechanel 2020-11-16
NBkiller 2020-06-14
wangzhaotongalex 2020-10-20
cshanzhizi 2020-10-16
luofuIT成长记录 2020-09-22
taomengxing 2020-09-07
MaggieRose 2020-08-19
jyj00 2020-08-15
MaggieRose 2020-07-04
modaiairen 2020-06-28
ziggurat 2020-06-28
JnX 2020-06-27
jyj00 2020-06-26
山水沐光 2020-06-25
shqhope 2020-06-23
eroshn 2020-06-21
码墨 2020-06-16
wyq 2020-11-11
TLROJE 2020-10-26