Linux shell编程之sed、awk

正则表达式概述

在讲sed和awk之前,先要了解什么是正则表达式。正则表达式分为“基础正则表达式”和“扩展正则表达式”。正则表达式是一个字符串处理的标准依据,是使用单个字符搜索、匹配一系列符合某个语法规则的字符串。由a~z以及特殊字符(元字符)组成。如果要以正则表达式的方式处理字符串,就必须使用支持正则表达式的工具。如下表:

文本处理工具基础正则表达式扩展正则表达式
vi编辑器支持
grep支持
egrep支持支持
sed支持
awk支持支持

基础正则表达式

基础正则表达式是常用的正则表达式部分。下表列出常用的元字符及作用。

元字符作用
\转义字符,用于取消特殊符号的含义,如:!、\n等
^匹配字符串的开始位置,如^hello,匹配以hello开头的行
$匹配字符串的结束位置,如world$,匹配以world结尾的行
.匹配除了\n(换行)以外的任意一个字符
[list]匹配list列表中的一个字符,如[0-9]匹配任意一个数字
[^list]匹配不在list列表中的一个字符,如[^0-9]匹配除了0-9以外的任意一个字符
{n}匹配前面的子表达式n次,如[0-9]{2}匹配两位数字
{n,}匹配前面的子表达式最少n次,如[0-9]{2}匹配两位数字或者两位以上的数字
{n,m}匹配前面的子表达式最少n次,最多m次如[a-z]{2,3}匹配两到三位的小写字母
*匹配前面的表达式0次或者多次

以/etc/passwd文件为例,我备份了一下做了一些修改
[root@localhost ~]# cp -p /etc/passwd /root/passwd.bak
在这里插入图片描述
下面以grep工具,对基本元字符的使用做一下介绍。
对于过滤的表达式如果匹配到会标红。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


扩展正则表达式

扩展正则表达式是基础正则表达式的扩充与深化。常用的扩展元字符如下表:

元字符作用
+匹配前面的子表达式至少1次,例如:ab+c,将匹配b最少一次
匹配前面的子表达式0次或者1次,例如:ab?c,将匹配ac或者abc
()将()中的字符串作为一个整体来匹配,例如:a(bc)d,将匹配ad或者abcd
|以或的方式匹配字符串,例如:abc|abd,将匹配abc或者abd

下面以grep工具,对扩展元字符的使用做一下介绍。使用grep工具需要配合“ -E ”选项才能使用扩展元字符,egrep工具与“grep -E”功能相同,所以基本都用egrep工具结合扩展元字符。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


Sed工具

基本语法

  • sed -e ‘编辑指令’ 文件1 文件2 …
  • sed -n -e ‘编辑指令’ 文件1 文件2 …
  • sed -i -e ‘编辑指令’ 文件1 文件2 …

常用选项

  • -e 指定要执行的命令,只有一个执行命令时可以省略。
  • -n 只输出执行编辑指令之后的行,读入时不显示。
  • -i 直接编辑文件,而不输出结果。

常用指令

  • -p 输出指定行
  • -d 删除指定行
  • -s 替换字符串,用法与vi编辑器相同,格式:s/就字符串/新字符串/g
  • -r 读取指定文件
  • -w 保存为文件
  • -i 在当前行前面插入一行或多行
  • -a 在当前行后面插入一行或多行
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

Awk工具

基本语法

  • awk 选项 ‘模式或条件{编辑指令}’ 文件名
    • 模式决定何时对数据进行操作,例如BEGIN,END;模式也可以为条件语句、复合语句或正则表达式。
  • awk -f 脚本文件 文件名

常见内置变量

  • FS:指定每行文本以什么字段分隔,默认为空格
  • OFS:指定以什么字段连接文本
  • NF:当前处理的行的字段个数
  • NR:当前处理的行号(序号)
  • $0:当前处理行的整行的文本内容
  • $n:当给处理行的第n个字段
    在这里插入图片描述
    在这里插入图片描述
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值