正则表达式简单使用

正则表达式:为要为文本筛选 精准匹配
正则表达式,使用一些通用的符号

基本用法:
^ 匹配行守
]# grep “^a” test.txt #匹配test.txt文本中以a开头的行

$ 匹配行尾
]# grep “a$” test.txt #匹配test.txt文本中以a结尾的行

[] 集合,匹配集合中的任意单个字符
]# grep “[ac]” test.txt #匹配所有有a 或c的行
]# grep “.” test.txt
]# grep “a.c” test.txt

[^] 对集合取反
]# grep “[^ab]” test.txt #匹配test.txt文本中没有a或b的行

. 匹配任意单个字符
]# grep “ab.” test.txt #匹配test.txt文本中ab与任意字符在一起的行

  •   匹配前一个字符任意次数[*不允许单独使用]
    

]# grep “a*” test.txt #匹配test.txt文本中a出现任意次数的行

{n,m} 匹配前一个字符n到m次
]# grep “a{1,2}” test.txt #匹配test.txt文本中a出现1或2次的行
{n} 匹配前一个字符n次
]# grep “a{2}” test.txt #匹配test.txt文本中a出现2次以及2次以上的行

扩展正则:egrep

{n,m}同等于{n,m}
]# egrep “a{2}” test.txt #匹配test.txt文本中a出现1或2次的行
+同等于a{1,} 最少匹配一次
egrep “a+” test.txt #匹配test.txt文本中a出现1次或多次的行
? 最多匹配一次
]# egrep “abc?” test.txt #匹配ab开头c出现0到1次的行
| 或者 |同等于[]

() 将括号中的内容组合为一个整体
]# egrep “(ab){2}” test.txt #将ab组合为一个整体查询ab出现2次的行
\b 单词边界
]# egrep “/bab/b” test.txt #查询ab两边都为空或有间隔的行(也可单边使用)

补充:
\为转义符号,可以为一些普通字符赋予特殊含义,或者将一些特殊字符变为普通字符.
\w 匹配字母数字下划线
egrep “\w” regular_express.txt #匹配文件中字母数字和下划线

\s 匹配空格,制表符(Tab)
]# egrep “\s” regular_express.txt #匹配文件中的空格,空行,和制表符

\d 匹配数字
使用时必须使用 grep -P 格式grep -P “\d” 文件

流式编辑器(sed) 可以查看和编辑文档逐行处理

用法1:前置命令|sed [选项] 条件指令
用法2:sed [选项]

Sed -n 屏蔽默认输出
Sed -r 支持扩展正则表达式
Sed -i 写入文件,对文件进行修改 在测试练习中不要使用

指令:
P 输出文本内容
Sed ‘p’ test1.txt #输出文件所有行,并附加默认输出的行
Sed -n ‘p’ test1.txt #输出文件所有行,没有默认输出 同等于cat
Sed -n ‘1p’ test1.txt #只输出文件的第1行
Sed -n ‘1,3p’ test1.txt #输出文件第1到3行
Sed -n ‘1p;3p’ test1.txt #输出文件第1行和第3行
Sed -n ‘1,+2p’ test1.txt #输出文件第1行和后面的2行
Sed -n ‘1~2p’ test1.txt #输出奇数行(只显示奇数行)
Sed -n ‘2~2p’ test1.txt #输出偶数行(只显示偶数行)

! 在sed中可以做取反 $= 显示行号

Sed -n ‘/^root/!p’ test1.txt #输出不以root开头的行
Sed -n ‘/bash$/p test.txt #输出以bash结尾的行
Sed -n ‘/o{2}/p’ test1.txt #输出连续出现两个o的行
Sed -rn ‘/o{2}p/’ test1.txt #效果跟上面一样 只是以扩展正则表达式来表达

d 删除文本内容
KaTeX parse error: Expected 'EOF', got '#' at position 38: …est1.txt #̲删除第3到5行 Sed ‘/r…/!’ test1.txt #删除不以bash结尾的行
Sed ‘KaTeX parse error: Expected 'EOF', got '#' at position 22: …t1.txt #̲删除文件的最后一行 Sed ‘…/d’ test1.txt #删除文件中所有的空行

S替换文本内容
Sed ‘s//bin/bash//sbin/sh/’ test1.txt #常规替换会报错 这里的替换格式中的/可用!@#$%^&*()以上10个符号代替
]# sed ‘s/2017/6666/’ test1.txt #将文本中每行第一个2017替换成6666
]# sed ‘s/2017/6666/3’ test1.txt #将文本中每行第3个2017替换成6666
]# sed ‘s/2017/6666/g’ test1.txt #将文本中所有的2017替换成6666
]# sed ‘s/2017//g’ test1.txt #删除文本中所有的2017
]# sed ‘s/^/#/’ test1.txt #为每一行开头加一个#符号 同等于全文加注释
]# sed ‘s/^#//’ test1.txt #删除所有行的#符号

在sed中()额外的功能为复制
具体应用:sed -r ‘s/(^.)(.*)(.$)/\3\2\1/’ 6.txt #将文件中第一个字符与最后一个字符互换

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值