2018.8.18笔记

正则表达式:

egrep是grep的扩展,grep有的功能egrep都有

grep命令

grep命令的名称是来自于全局搜索正则表达式并打印文本行(Global Search Regular Expression and Print out the line)的缩写。

 

语法如下

grep [-cinvABC] 'word' filename

 

 选项

  • -c:表示打印行数

  • -i:表示忽略大小写

  • -n:表示输出符合要求的行及行号

  • -v:反向选择。找出没有关键字的那一行。

  • -A:后面跟数字,过滤出符合要求的行以及下面n行。

  • -B:后面跟数字,过滤出符合要求的行以及上面n行。

  • -C:后面跟数字,过滤出符合要求的行以及上和下面n行。

  • -E:支持扩展正则表达式。同egrep

  • -P:支持Perl正则表达式。

  • -F:不支持正则表达式,以字面意思匹配。

 

sed命令

sed是一个非交互式的文本编辑器,可以对文本文件以及标准输出进行编辑。

sed命令会将文件或标准输出中一次选取一行数据,复制进缓冲区,然后读取编辑的子命令,对行进文本行编辑,重复此过程,直到所有的文本行处理完毕。

sed命令编辑的文件是原始文件的副本,因此编辑操作并不影响原文件,只输出到屏幕,如果想保存,就重定向到磁盘文件即可。

sed和grep相比,sed也能实现grep的功能,但是有点麻烦,而且没有用颜色显示,强项在于替换

sed命令的使用方法

语法:

sed [选项] [脚本] [输入文件]

 

选项:

-n:取消默认输出。只显示特殊处理的行。

-e:运行执行多个脚本

-f:后面跟脚本名,从脚本中读取命令

-i:直接修改原始文件。

-I:大写i,不区分大小写。

-l:指定行的长度。

-r:在脚本中使用扩展正则表达式。

-s:默认情况下,sed会把命令行指定的多个文件名作为一个长的连续的输入流。而GNU sed则允许把他们当作单独的文件,这样的话,正则表达式不进行跨文件匹配。

-u:最低限度的缓存输入与输出。

 

脚本:

用户可以将一系列的sed命令写在一个脚本文件中,sed会从该文件中读取并依次执行各个命令。

 

输出文件:

表示输入文件,没有指定输入文件,则从标准输入中读取。

 

三种工作方式:

1.在命令行直接执行sed命令。sed [选项] [命令] [提供数据的文件]

2.将sed的操作写入脚本,通过-f指定脚本。sed [选项]  -f [脚本] [提供数据的文件]

3.将sed写入脚本,解释器为 #! /bin/sed。./scrpt [提供数据的文件]

sed的常用操作以及使用方法

sed编辑命令的基本语法-总的语法

语法:

[位置参数1[,位置参数2]]  子命令 [子命令参数]

 

介绍:

位置参数:可以用行号或者正则来表示。指定了位置参数,对匹配的行进行操作。没有指定位置参数对全部的内容进行操作。

子命令:sed提供的子命令,用来实现编辑操作。

子命令参数:子命令的参数。

 

子命令:

p:将缓存区的文本行输出出来。

s:替换命令。可以通过标志决定替换的模式,g:全局。十进制数字:第几个。p:第一个并输出。w:第一个并输出到磁盘。空:替换第一个。

d:删除文本。

a:在匹配的行的下面另起一行追加内容。

i:在匹配的行的上面另起一行追加内容。

 

 选择文本 p

子命令p可以把位置参数筛选出来的参数,显示出来。。语法如下:

[位置参数1[,位置参数2]]  p

 

awk命令

awk的设计使得他非常适合处理由行列组成的文本数据。awk还是一种编程语言环境,他提供了正则表达式的匹配,流程控制,运算符,表达式,变量,以及函数等一系列的程序设计语言所具备的特性。

 

 

awk命令的基本语法

awk命令的基本语法:

awk  匹配模式  { 执行的操作 }

 

 

awk的工作流程

awk处理数据时,他会反复执行一下4个步骤:

1.自动的从数据文件中读取文本的行。

2.自动更新 awk 的内置系统变量的值。例如:列数变量NF,行数变量NR,行变量$0,各个变量$1,$2等。

3.依次执行程序中的所有的匹配模式及其操作。

4.当执行完程序的所有匹配模式和操作后,如果数据文件中仍有未读取的数据行,则返回第一步重复执行1~4的操作。

 

 

 awk的执行方式

用户通过3种方式来执行awk程序,分别是命令行,awk脚本,可执行文件。

命令行语法 awk  'awk程序语句'  待处理的文件 。例如:awk '{ print }' a.txt

awk脚本语法 awk  -f  awk脚本  待处理的文件 。awk脚本里依次写上awk程序语句即可。

可执行脚本语法 awk脚本 待处理的文件 。但是一定要指定命令解释器 #! /bin/awk -f 。脚本内容依次写上awk的程序语句即可。

 

 

 特殊字符

$0:表示整个当前行 

$1:每行第一个字段 

NF:字段数量变量 

NR:每行的记录号,多文件记录递增 

FNR:与NR类似,不过多文件记录不递增,每个文件都从1开始 

FS:BEGIN时定义分隔符,默认是空格或制表符。

RS:输入的记录分隔符,默认是换行符。awk每次读取一行进行处理,通过指定行分隔符,来决定awk一次读取多少行。例如:指定行分隔符为空行,awk每次读取有空格的地方。

\t:制表符 

\n:换行符 

~ :匹配,与==相比不是精确比较 

!~:不匹配,不精确比较 

== :等于,必须全部相等,精确比较 

!= :不等于,精确比较 

&&:逻辑与 

||: 逻辑或 

+:匹配时表示1个或1个以上 

/[0-9][0-9]+/: 两个或两个以上数字 

/[0-9][0-9]*/ : 一个或一个以上数字 

OFS:输出字段分隔符, 默认也是空格,可以改为制表符等 

ORS:输出的记录分隔符,默认为换行符,即处理结果也是一行一行输出到屏幕 

-F ':' :指定分隔符

 

awk的模式匹配

awk的匹配模式主要包括关系表达式,正则表达式,混合模式,BEGIN模式,END模式等。

 

关系表达式

awk提供了许多关系运算符,例如大于> ,小于< ,等于==等,awk可以以关系表达式作为匹配模式,当文本行满足关系表达式时,则会执行响应的操作。

 

转载于:https://my.oschina.net/u/3856250/blog/1931148

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值