Shell正则表达式与三剑客

前言

目录

前言

一、正则表达式概述

二、基础正则表达式常见元字符

三、grep工具

四、sed工具

sed工具概述

常用选项

常用操作

迁移符合条件的文本

例子

五、awk工具

awk工具概述

工作原理

命令格式

awk内置变量

例子

总结


如何在脚本快速高效的处理文本,删除替换,添加等,这是需要我们掌握各文本工具的应用

一、正则表达式概述

正则表达式,又称规则表达式。(英语:Regular Expression),在代码中常简写为 regexregexp 或 RE),计算机科学的一个概念。正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。

常用工具有:grep sed awk egrep 

正则表达式---通常用于判断语句中,用来检查某一字符串是否满足某一格式
正则表达式是由普通字符与元字符组成
普通字符包括大小写字母、数字、标点符号及一些其他符号
元字符是指在正则表达式中具有特殊意义的专用字符,可以用来规定其前导字符(即位于元字符前面的字符)在目标对象中的出现模式

LINUX 中常用的有两种正则表达式引擎
基础正则表达式:BRE
扩展正则表达式: ERE

二、基础正则表达式常见元字符

\转义符,将特殊字符进行转义
^匹配行首,^则是匹配字符串的开始
$匹配行尾,$则是匹配字符串的结尾
\{n\}匹配前面的子表达式n次
\{n,\}匹配前面的子表达式不少于n次
\{n,m\匹配前面的子表达式n到m次

三、grep工具

-a将 binary 文件以 text 文件的方式搜寻数据
-c将 binary 文件以 text 文件的方式搜寻数据
-i忽略大小写的不同,所以大小写视为相同
-n顺便输出行号
-v反向选择,亦即显示出没有 '搜寻字符串' 内容的那一行
例:grep -c "the" web.sh        ##统计the字符总行数
   grep  -i "the"   web.sh     ##不区分大小写查找the所有的行

    

四、sed工具

sed工具概述

sed是一个强大而简单的文本解析转换工具,可以读取文本,并根据指定的条件对文本内容进行编辑(删除、替换、添加、移动等),最后输出所有行或者仅输出处理的某些行。sed 也可以在无交互的情况下实现相当复杂的文本处理操作,被广泛应用于 Shell 脚本中,用以完成各种自动化处理任务。


常用选项

-e指定要执行的命令,只有一个编辑命令时可省略
-f用指定的脚本文件来处理输入的文本文件
-n只输出处理后的行,读入时不显示
-i直编辑文本文件

常用操作

a插入,在当前行后面插入一行或多行
c将选定行替换成指定内容
d删除指定的行
i插入,在当前行上面插入一行或多行
p打印
s字串替换,格式: “行范围s/原字符串/新字符串/g”
y字符转换

迁移符合条件的文本

使用sed命令迁移常用一下参数

H复制到剪贴板
g,G将剪贴板数据覆盖
w保存文件
r读取指定文件
a追加指定内容

例子

sed -n '/yum/='pass.txt
##查找pass.txt带yum的行

sed -n '/yum/p' pass.txt
##打印pass.txt带yum的行


sed -n '3,5' pass.txt
##打印3到5行


sed '/the/w out.file' test.txt
##将test.txt中所有的the的行存到out.file


sed 's/o/a/g' abc.txt
##将abc.txt中所有的o替换成a

五、awk工具

awk工具概述

功能强大的编辑工具

无交互的情况下实现复杂的文本操作

工作原理

逐行读取文本,默认以空格为分隔符进行分隔,将分隔所得的各个字段保存到内建变量中,并按模式或者条件执行编辑命令。

命令格式

awk 选项 ‘模式条件操作’ 文件1 文件2
awk -f 文件 脚本文件1 文件2

awk内置变量

FS指定每行文本的字段分隔符,默认为空格或制表位
NF当前处理的行的字段个数
NR当前处理的行的行号
$0当前处理的行的整行内容
$n当前处理行的第 n 个字段(第 n 列)

例子

awk -F ':' '{print $1}' passwd
##打印passwd所有第一列内容


awk 'NR==1,NR==3{print}' text.txt
##打印test.txt文件第一行到第三行的内容


awk 'NR==1|NR==3{print}' test.txt
##打印第一列和第三行的内容


awk -F ":" '$7~"/bash"{print $1.$7}' /etc/passwd
##打印第七列包含bash的第一列和第七列

总结

学会使用正则表达式与各种文本工具才能写出更加优秀快捷的脚本。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值