sed的使用

sed使用
sed [选项] ‘[动作指令]’ filename
选项:
-n 默认情况下,sed 会在动作指令执行完毕后,自动输出处理后的内容,而该选项会屏蔽默认输出。
-e 执行多个sed指令
-i 此选项会直接修改源文件,要慎用,修改前建议先备份源文件。
-i.bak 编辑源文件的同时创造.bak的备份
-r 使用扩展的正则表达式
动作指令:
p 打印 ,输出指定的行
S 替换,替换指定字符串 (sed ‘s/要被替换的字串/新的字串/g’)
d 删除,删除行
a 增加行,在当前行下面插入文件
i 增加行,在当前行上面插入文件
c 把选定的行改为新的指定的文本
r 读取文件,即用于将一个独立文件的数据插入到当前数据流的指定位置
w 另存为
第六章 awk应用
1、awk的基础应用
AWK是一种优良的文本处理工具,Linux及Unix环境中现有的功能最强大的数据处理引擎之一
和 sed 命令类似,awk 命令也是逐行扫描文件(从第 1 行到最后一行),寻找含有目标文本的行,如果匹配成功,则会在该行上执行用户想要的操作;反之,则不对行做任何处理。
在linux上常用的是gawk,awk是gawk的链接文件

awk 命令的基本格式
awk [-F field-separator] ‘commands’ filename
选项 含义
-F fs 指定以 fs 作为输入行的分隔符,awk 命令默认分隔符为空格或制表符。
-v var=val 在执行处理过程之前,设置一个变量 var,并给其设备初始值为 val。
‘匹配规则{执行命令}’
任何awk语句都是由’匹配规则{执行命令}'组成,一个awk中可以有多个语句。匹配规则决定执行命令的执行条件
awk '/^KaTeX parse error: Expected group after '^' at position 41: …est.txt 在此命令中,/^̲/ 是一个正则表达式,功能是匹配文本中的空白行,同时可以看到,执行命令使用的是 print 命令,此命令经常会使用,它的作用很简单,就是将指定的内容进行输出。因此,整个命令的功能是,如果 test.txt 有 N 个空白行,那么执行此命令会输出 N 个 Blank line。
注:在 awk 程序执行时,如果没有指定执行命令,则默认会把匹配的行输出;如果不指定匹配规则,则默认匹配文本中所有的行。

例如上面举的例子中’/^KaTeX parse error: Expected group after '^' at position 26: …Blank line"}',/^̲/就是匹配规则,print就是执行命令,当文件中有匹配/^$/条件的行是就会执行pirnt命令
匹配规则(即执行条件):
一般使用关系表达式作为条件。这些关系表达式非常多,具体参考下表:
条件类型 条 件 说 明
awk保留字 BEGIN 在awk程序一开始,尚未读取任何数据之前执行。BEGIN 后的动作只在程序开始时执行一次
awk保留字 END 在awk程序处理完所有数据,即将结束时执行。END 后的动作只在程序结束时执行一次
关系运算符 > 大于
< 小于
>= 大于等于
<= 小于等于
== 等于。用于判断两个值是否相等。如果是给变童赋值,则使用"=”
!= 不等于
匹配表达式 ~(匹配) value ~ /regexp/ 如果value匹配/regexp/,则返回真
!~(不匹配) value !~ /regexp/ 如果value不匹配/regexp/,则返回真
正则表达式 /正则表达式/ 如果在“//”中可以写入字符,则也可以支持正则表达式,如:/root/表示匹配含有root的行。
逻辑运算符 && 逻辑与
|| 逻辑或
[root@localhost ~]# awk -F: ‘ 7   / b a s h 7 ~ /bash 7 /bash/ {print $1}’ /etc/passwd
判断 7 ( 第 7 个 数 据 字 段 ) 的 值 是 否 匹 配 正 则 表 达 式 / b a s h 7(第7个数据字段)的值是否匹配正则表达式/bash 77/bash/
[root@localhost ~]# awk -F: ‘ 7 !   / b a s h 7 !~ /bash 7! /bash/ {print $1}’ /etc/passwd
判断 7 ( 第 7 个 数 据 字 段 ) 的 值 是 否 不 匹 配 正 则 表 达 式 / b a s h 7(第7个数据字段)的值是否不匹配正则表达式/bash 77/bash/

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值