sed与awk基本知识2018.03.23

一、Sed概述

   sed 是一种在线编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。

   sed主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等

   文件内容并没有改变,除非你使用重定向存储输出

二、sed命令

   常用选项:

-n∶使用安静(silent)模式。在一般 sed 的用法中,所有来自 STDIN的

内容一般都会被列出到屏幕上。但如果加上 -n 参数后,则只有经过sed 特

殊处理的那一行(或者动作)才会被列出来。

-e∶直接在指令列模式上进行 sed 的动作编辑;

-f∶直接将 sed 的动作写在一个档案内, -f filename 则可以执行

filename 内的sed 动作;

-r∶sed 的动作支持的是延伸型正规表示法的语法。(预设是基础正规表

示法语法)

-i∶直接修改读取的档案内容,而不是由屏幕输出。

   常用命令

a:新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下

一行)

c:取代, c 的后面可以接字串,这些字串可以取代n1,n2 之间的行

d:删除,d 后面通常不接任何内容

i:插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一

)

p:列印,即将某个选择的内容打印出来。通常 p 会与参数 sed -n 一起运

s:替换,可以直接进行替换的工作,通常这个 s 的动作可以搭配正规表示

法,例如 1,20s/old/new/g 就是啦

 

三、awk概述

   相较于sed 常常作用于一整个行的处理,awk 则比较倾向于一行当中分成数个『字段』来处理。 因此,awk 相当的适合处理小型的数据数据处理

 

四、常用命令选项

   -F fs: fs指定输入分隔符,可以是字符串或正则表达式

   -v:var=vaelue 赋值一个用户定义变量,将外部变量传递给awk

   -f:scripfile  从脚本文件中读取awk命令

五、awk脚本

   awk脚本是由模式和操作组成的

   模式:

   模式可以是以下任意一个:

•/正则表达式/:使用通配符的扩展集。

•关系表达式:可以用下面运算符表中的关系运算符进行操作,可以是字符串

或数字的比较,如$2>%1选择第二个字段比第一个字段长的行。

•模式匹配表达式:用运算符~(匹配)和~!(不匹配)。

•模式,模式:指定一个行的范围。该语法不能包括BEGIN和END模式。

•BEGIN:让用户指定在第一条输入记录被处理之前所发生的动作,通常可在

这里设置全局变量。

•END:让用户在最后一条输入记录被读取之后发生的动作

 

操作:操作由一人或多个命令、函数、表达式组成,之间由换行符或分号隔开,

并位于大括号内。主要有四部份:

•变量或数组赋值

•输出命令

•内置函数

•控制流命令

六、awk脚本基本结构

   一个awk脚本通常由:BEGIN语句块、能够使用模式匹配的通用语句块、END语句块3部分组成,这三个部分是可选的。任意一个部分都可以不出现在脚本中,脚本通常是被单引号或双引号中

  第一步:执行BEGIN{ commands }语句块中的语句;

第二步:从文件或标准输入(stdin)读取一行,然后执行pattern{ commands

}语句块,它逐行扫描文件,从第一行到最后一行重复这个过程,直到文件全

部被读取完毕。

第三步:当读至输入流末尾时,执行END{ commands }语句块

 

七、awk内置变量

   $n 当前记录的第n个字段,比如n为1表示第一个字段,n为2表示第二个字

段。

$0 这个变量包含执行过程中当前行的文本内容。

FNR 同NR,但相对于当前文件。

FS 字段分隔符(默认是任何空格)

NF 表示字段数,在执行过程中对应于当前的字段数

NR 表示记录数,在执行过程中对应于当前的行号

OFS 输出字段分隔符(默认值是一个空格)

RS 记录分隔符(默认是一个换行符)

ORS 输出记录分隔符(默认值是一个换行符)

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值