【linux shell】linux三剑客&正则 速查

linux三剑客&正则 速查

写在前面, 根据日常使用会持续更新

正则表达式

基础正则

$ 以什么结尾      grep root$ file 查找以root结尾的
^ 以什么开头      grep ^root file 查找以root开头的
. 匹配任何一个字符
* 匹配前面一个字符或者表达式0次或者任意次        grep y*root file 查找root前有0个或者任意个y 
[] 匹配括号中的任意一个字符, 注意是一个         grep ro[bdo]t file 查找robt rodt root
[^] 不匹配括号里面的字符                       grep
\ 转义符
{n} 使前面字符出现n次  grep "g\{3\}" file   注意:这里的花括号要转移, 并且最外侧加双引号
{n,} 使前面的字符出现不少于n次
{n,m} 使前面的字符至少出现n次, 最多m次

扩展正则

扩展正则必须使用egrep 或者 grep -E **

+ 匹配前面的字符一次或者多次  grep -E g+d file  匹配gd ggd gggd等
? 匹配前面的一个字符0次或者一次 
| 或匹配                  grep -E my|me file  把包含my或者包含me的都输出
()()里面的当作一个整体    比如grep -E (djw)? 匹配一次djw或者0次

grep

grep -r xxx ./  
grep -rn  xxx ./ 
grep -rni xxx ./
grep -v xxx file 
grep -c xxx file
#格式
grep
-i不区分大小写
-v取反 或者叫反向输出
-w以单词为单位进行过滤
-B指定行数,过滤指定内容以及上几行
-A指定行数,过滤指定内容以及下几行
-C指定行数,过滤指定内容以及上下各几行
-o只输出过滤的内容
-c统计过滤的行数
-n显示行号
-E使用扩展正则
-r递归查找目录

sed

作用: 修改文件的特定位置

sed作用
-n只输出处理的行
-i直接修改文件内容,编辑文件 谨慎使用
-e指定多个sed内置操作,现在不常用,多个sed内置操作可以使用分号隔开
-r支持扩展正则表达式
# 对每行匹配到的第一个字符串进行替换
sed -i 's/原字符串/新字符串/' ab.txt 
 
# 对全局匹配上的所有字符串进行替换
sed -i 's/原字符串/新字符串/g' ab.txt 
 
# 删除所有匹配到字符串的行
sed -i '/匹配字符串/d'  ab.txt  
 
# 特定字符串的行后插入新行
sed -i '/特定字符串/a 新行字符串' ab.txt 
 
# 特定字符串的行前插入新行
sed -i '/特定字符串/i 新行字符串' ab.txt
 
# 把匹配行中的某个字符串替换为目标字符串
sed -i '/匹配字符串/s/源字符串/目标字符串/g' ab.txt
 
# 在文件ab.txt中的末行之后,添加bye
sed -i '$a bye' ab.txt   
 
# 对于文件第3行,把匹配上的所有字符串进行替换
sed -i '3s/原字符串/新字符串/g' ab.txt 
sed -n ‘2p’ a.txt #打印第二行 (2)
sed -n ‘2,5p’ a.txt #打印第二行到第五行(2,3,4,5)
sed -n ‘2p;5p’ a.txt #打印第二行和第五行(2,5)
sed -n ‘3,$p’ a.txt #打印第三行到最后一行(3,4,5,6,7,8,9,10)
sed -n ‘1~2p’ a.txt #打印指定步长为2,所以打印的是1、3、5、7…行 (1,3,5,7,9)
sed -n ‘1,+2p’ a.txt #打印第1行到第1+2行,也就是1到3行(1,2,3)
sed '3d' a.txt #输出删除第三行的内容

awk

文本处理, 或是报表生成

ps aux | awk '{print $2}'  #输出第二列
awk 'NR==1 || NR==3{print}' file #输出第一行和第三行
awk '(NR%2)==1{print}' file #输出所有奇数行的内容
awk '/^qwer/{print}' file #输出qwer开头的行
awk '/qwer$/{print}' file #输出qwer结尾的行
awk 'BEGIN {x=0} ;/\/bin\/bash$/{x++};END {print x}' /etc/passwd #输出以/bin/bash 结尾的有几行
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值