【9159金沙官网】2.扩展的正则表达式

作者: 操作系统  发布:2019-08-31

split

用来将大文件切割成小文件,split命令能够遵守文件的行数,字节数切割文件,并能在出口的多少个文本中自动抬高编号

split [选项] 待切割的大文件 输出的小文件

选项 意义
-n 用于指定切割成小文件的行数
-b 指定切割成小文件的字节
-C 与-b类似,但是,切割时尽量维持每行的完成性

split -2 input input(默认是x) split -b100 input input split -C100 input input

awk数组

动用实例:

  1. 将文件划分到数组:awk 'BEGIN {print split("123:456:789",array,":")}'
    收获的数组为:array[1]="123"等。
  2. 循环:For (element in array) print array[element]

awk中的特殊元字符: ,?(相称单个字符)
相称操作符:~(匹配) !~(不匹配)
cat score.txt |awk '$0~/218.222.12.122/'
man awk

Wangjian 33

实例:测试~运算符

awk ‘BEGIN{FS=”:”} $1~/root/’ input awk 条件语句
与C类似,有if,if/else,if/else if/else
awk ‘BEGIM{FS=”:”}{if(1 /root/)print0}’ passwd

AWK实行理文件本过滤

Usage: awk [POSIX or GNU style options] -f progfile file ...
Usage: awk [POSIX or GNU style options] 'program' file ...

当中progfile中还是'program'是真正的AWK命令,最终的file是输入文件(s)。

常用的参数是-F 田野-separator,钦定文件分隔符,默以为空白字符。对于passed之类的行使冒号分割的,则接纳-F:参数,表示冒号为列分割。

一致能够使得同sh脚本同样,在首行钦赐#/bin/awk,能够使脚本文件使用AWK举行推行。

 

sed的使用:

cut

cut命令用于从标准输入或文本文件中按域或按行提取文本

选项 意义
-c 指定提取的字符数或字符范围
-f 指定提取的域数或域范围
-d 改变域分隔符

-c按字符提取文本
cut -c2 input
cut -c1,5 input(提取第1个和第5个字符)
cut -c1-5 input(提取1~5那多个字符) -f按域提取文本 -d类似sort和join中的-t

awk内置变量

A锐界GC    命令行参数个数
AKugaGV    命令行参数排列
ENVIRON  援救队列中系统蒙受变量的行使
FILENAME  awk浏览的文件名
FN陆风X8      浏览文件的记录数
FS      设置输入域分隔符,等价于命令行-F选项
NF      浏览记录的域个数
NLAND      已读的记录数
OFS      输出域分隔符
OEscortS      输出记录分隔符
牧马人S      调节记录分隔符

打字与印刷记录号,域个数,最终打字与印刷文件名称
awk '{print NF"t"NR"t"$0} END {print FILENAME}' data.f

9159金沙官网 1

如split -10 ls_out.txt split

要用逗号分隔域

实例

sed -n ‘1p’ file sed -e ‘/^f*/p’ -e ‘/^f*/=’ file 定位命令
相配元字符
sed -n ‘/./p’ input
sed -n ‘/$/p’ input 使用元字符进行相配
sed -n ‘p′input(注意:在sed命令中象征最后一行)
sed -n ‘/^$/p’ input (相称空行)
sed -n ‘/.*bus/p’ input !符号
sed -n ‘2,10!p’ input 使用行号与重大字相配限定行范围
sed -n ‘/seugrid/,$p’ input
sed -n ‘3,/seugrid/p’ input

编排命令

插入文本
sed ‘钦赐地址itext’ input (在内定地方在此以前插入)
sed ‘钦定地址atext’ input (在钦命地方然后插入)
sed ‘/i/iinputnsecond’ (插入两行input和second)
sed ‘/i/ainputnsecond’ 修改文件
sed ‘钦点地址ctext’ input (将全体相称行修改为新文本行)
sed ‘/Certificate/cNew line:’ input 删除文本
sed ‘钦赐地点d’ input (删除内定行) 替换文本
sed ‘s/被替换字符串/新字符串/[轮改选项]’
sed ‘s/被替换字符串/新字符串/number[轮换选项]’(表示第number(1~512)次匹配)

选项 意义
g 全部替换
p 与-n选项结合,只打印替换行
w 文件名 表示将输出定向到一个文件

写入新文件
sed ‘钦命地址w file’ input
sed ‘1,5w file’ input
sed ‘/Certificate/w file’ input 从文件读入文本
sed ‘内定地方r file’ input 退出命令
sed ‘钦定地点q’ input 转换命令
sed ‘y/被交换字符连串/转换的字符类别/’ 输入文件
八个体系长度必需一致
sed ‘y/fmg/FMG/’ input 呈现调节字符
突显退格符,F1键,shift键等
sed -n l input
sed -n ‘内定地方l’ input 在稳固行实施命令组
sed -n -e ‘/Certificate/p’ -e ‘/Certificate/=’ input
sed -n ‘/Certificate/{p;=}’ input 高档编辑命令
管理相称行的下一行
sed ‘/Certificate/{n;s/11/99/;}’ input sed缓冲区的拍卖
sed ‘/Subject/h;/seugrid/x;$G’ input
1.相配Subject,并将相称行写入保持缓冲区
2.相称seugrid,将维持缓冲区和情势缓冲区交流
3.到结尾行,将维持缓冲区追加到格局缓冲区 利用分号分隔三个编辑命令
上例已经运用了这种代表

awk中的正则表达式

awk中应用正则时,是运用//括起来。如:/wang*/

标准操作符

操作符

描述

 

操作符

描述

小于

 

>=

大于等于

<=

小于等于

 

~

匹配正则表达式

==

等于

 

!~

不匹配正则表达式

!=

不等于

   &&  且

||

  !

打字与印刷符合条件的行的一部分列: awk '{if($4~/LPSX/) print $2"t"$4"t"$5}' data.f

9159金沙官网 2

打字与印刷不符合条件的行的部分列: awk '{if($4!~/LPSX/) print $2"t"$4"t"$5}' data.f

9159金沙官网 3

打字与印刷第一列小于第七列的:awk '{if($1 < $7) print $1"t"$4"t"$7}' data.f

9159金沙官网 4

****************************************************

此命令在mydata.doc中相称字符串“Sept”和“sept”。

笔录和域

awk以为文件是有结构的,每一行事贰个笔录,记录由域组成,域之间采取空格,Tab或别的标志进行分隔。
域操作符$:钦赐推行动作的域,$1…标记每一个域,$0表示全数记录;也足以跟变量或变量表达式
如:awk ‘BEGIN{one=1;two=2} {print $(one two)}’ input
暗中同意是空格,Tab键被感到是多个空格(也三个空格被当成三个空格)
1.方可使用-F 来改换私下认可的相间符
2.足以利用景况变量FS设置分隔符
实例:
1.FS=”t”
2.FS=”t ”
记录:wazttcq
对于FS=”t” 分成四个域,waz,空域,cq;对于FS=”t ”,结果是waz,cq

领到文件中的每一列

awk '{print $0}' data.f
awk '{print $3}' data.f

9159金沙官网 5

可是这里有个很有趣的地方
while read line <testfile.dat
do
   echo $line
done
那个会不断读入第一行

grep的使用:

通配符

bash Shell本人不援助正则表明式,使用正则表明式的是shell命令和工具,如grep,AWK,sed等。可是bash Shell能够应用正则表明式中的一些元字符完毕通配。

符号 意义 示例 解释
* 任意字符 Phi*ip.rtf 以Phi开头,以ip.rtf结尾的文件
? 一个任意字符 ls -l 0?.pem 列出0开头且文件为两个字符的pem文件
[] 表示范围 ls -l [a-h].awk 列出以a-h开头的awk文件
{} 一组表达式的组合 ls -l {[a-h]*.awk,0?.pem} 匹配[a-h]*.awk或0?.pem的文件
^ 取反 ls -l [a-h]*.[^awk]* 以a-h开头,且不是awk类型的文件

egrep

expression或extended grep,接受全数的正则表明式,特点为:

  1. 文本作为查询的正则字符串。egrep -f grepstrings data.f
  2. 利用 | 符号,表示非常两边之一
  3. 行使 ^ 符号,表示不相配到。

 

sort -t"." 2 myfile
sort -t"." 2n myfile

num.doc:2

AWK

awk的宗旨语法与C语言类似,与sed的功效类似,用来拍卖文件,awk能够从文件或字符串中基于钦赐法规浏览和抽出音信,在收取新闻的根基上,技艺举行别的文件操作
风行的awk是gawk,可以达成多少检索,收取文件中数据,创立管道流命令

grep使用正则匹配

为了以免shell的交替等任何行为发出,使用时常常选拔单引号。

格局范围:grep '48[43]' data.f,匹配484/483
不相称行首:grep '^[^48]' data.f
先相称月份,再同盟情势:grep '[Ss]ept' data.f | grep 443
空行:grep '^$' data.f

推而广之情势

应用-E参数,这一扩张允许利用扩大格局匹配
匹配219或者216:grep -E '219|216' data.f

一、正则表达式
1、概念
1)、一种用来描述文本方式的奇怪语法
2)、由平常字符以及特殊字符(元字符)组成
3)、用来协作的字符串
4)、文本过滤工具在某种形式下都援救正则表明式

$myawk.awk inputfile.txt

正则表明式

POSIX标上改良则表达式分为两类
1.中央的正则表明式
2.扩展的正则表达式
大多数Linux应用和工具仅帮衬中央的正则表明式

添Gavin书头尾

awk 'BEGIN {print "MonthtPricen------------------------"} {print $2"t"$5} END {print "------------------ntip: end of file"}' data.f

9159金沙官网 6

终端

num.doc:1:hao 123

tr

现字符转变职能,tr能完毕的sed都能成功,不过tr轻巧

tr [选项] 字符串1 字符串2 < 输入文件

选项 意义
-c 反选字符串1的字符集
-d 删除字符串1中出现的所有字符
-s 删除所有重复出现的字符序列,只保留一个

正则表明式

符号

含义

.

匹配任意ASCII中任意单个字符,或是字母,或是数字

^

匹配行首

$

匹配行尾

*

匹配任意字符或前一个的一次或多次重复

转义,被转义的有$ . ‘ “ * [ ] ^ ( ) | ?

[…] [-]

匹配一个范围或集合

{}

匹配n次:{n},最少n次:{n,},m到n次:{m,n},

仅用于awk,标识匹配一个或多个

?

仅用于awk,匹配0次或1次

 

-c 只输出相配行的计数
-i (只适用于单字符)不区分轻重缓急写
-h 查询多文本时不展现文件名
-H 展现文件名
-l 查询多文本时只输出富含匹配字符的文件名
-n 展现相配行和行号
-s 不出示海市蜃楼或无相称文本的错误消息
-v 展现不分包相称文本的兼具行

x x代表行号。 

选项

选项 意义
-n 不打印所有行到标准输出
-f 表示正在调用sed脚本文件
-e 表示将下一个字符串解析为sed编辑命令,如果只传递一个编辑命令给sed,可以省略-e

sed

sed [选项] sed命令 输入文件
sed [选项] -f sed脚本文件 输入文件

提交八个文件的例子quota.txt:

The honeysuckle hand played all night long for only $90.
It was an evening of splendid music and company.
Too bad the disco floor fell through at 23:10.
The local nurse Miss P.Neave was in attendance.

选择包含:

  1. n,不打字与印刷所编纂的行到标准输出
  2. c,下一限令是编写制定命令,假若独有一条sed命令,则不必得钦定
  3. f,钦赐sed脚本文件

牢固到文本所在的行:

x

x为一行号,如1,$表示最后一行

x,y

表示行号范围从x到y,如2,5表示从第2行到第5行

/pattern/

查询包含模式的行。例如/disk/或/[a-z]/

/pattern/pattern/

查询包含两个模式的行。例如/disk/disks/

/pattern/,x

在给定行号上查询包含模式的行。如/ribbon/,3

x,/pattern/

通过行号和模式查询匹配行。3./vdu/

x,y!

查询不包含指定行号x和y的行。1,2!

主干的sed编辑命令

p

打印匹配行

=

显示文件行号

a

在定位行号后附加新文本信息

i

在定位行号前插入新文本信息

d

删除定位行

c

用新文本替换定位文本

s

使用替换模式替换相应模式

r

从另一个文件中读文本

w

写文本到一个文件

q

第一个模式匹配完成后推出或立即推出

l

显示与八进制ASCII代码等价的控制字符

{}

在定位行执行的命令组

n

从另一个文件中读文本下一行,并附加在下一行

g

将模式2粘贴到/patternn/

y

传送字符

n

延续到下一输入行;允许跨行的模式匹配语句

利用示例

  1. 展现钦定行(由于默许会打字与印刷全数编辑的行到输出,所以选择n参数):sed -n '2p' quote.txt
  2. 打字与印刷内定范围的行:sed -n '1,3p' quote.txt
  3. 打字与印刷符合情势的行:sed -n '/Neave/'p quote.txt
  4. 错落行号与情势:sed -n '4,/Neave/'p quote.txt
  5. 相配元字符,使用转义:sed -n '/$/'p quote.txt
  6. 打字与印刷行号:sed -n '/music/=' quote.txt
    假使不加-n,则会先打字与印刷编辑的行,再打字与印刷相称到行的行号。
  7. 轮换命令:sed '1,5s/night/NIGHT/' quote.txt
    轮换1到5行中率先次出现的neight成为NIGHT
    轮换还可以跟gpwn四个挑选中的多少个。g替换全体/私下认可替换贰次;p打字与印刷全数出口结果;w输出到二个文书,须要跟输出文件参数(注意同属于sed命令那么些参数)。

剧本文件的编辑撰写

一般来讲脚本文件,对给的演示数据试行:

#!/bin/sed -f
/company/ a
Then suddenly it happened.

施行后的结果为:

9159金沙官网 7

 

[root@localhost ~]# sed -n '2p' testfile.dat
Name:b Emain:
[root@localhost ~]# sed -n '1,4p' testfile.dat
Name:a Emain:
Name:b Emain:
Name:c Emain:
Name:a Emain:
[root@localhost ~]# sed -n '/Emain/' testfile.dat
sed:-e 表达式 #1,字符 7:missing command
[root@localhost ~]# sed -n '/E/p' testfile.dat
Name:a Emain:
Name:b Emain:
Name:c Emain:
Name:a Emain:
Name:b Emain:
Name:c Emain:
Name:a Emain:aa
Name:b Emain:bb
Name:c Emain:cc
[root@localhost ~]# sed -n '7,/cc/p' testfile.dat
Name:a Emain:aa
Name:b Emain:bb
Name:c Emain:cc
[root@localhost ~]# sed -n '/^$/=' testfile
sed:无法读取 testfile:没有那个文件或目录
[root@localhost ~]# sed -n '/^$/=' testfile.dat
[root@localhost ~]# sed -n '/^$/p' testfile.dat
[root@localhost ~]# sed -n -e '/^$/p'-e'/^$/=' testfile.dat
sed:-e 表达式 #1,字符 6:extra characters after command
[root@localhost ~]# sed -n -e'/^$/p'-e'/^$/=' testfile.dat
sed:-e 表达式 #1,字符 6:extra characters after command
[root@localhost ~]# sed -n -e'/^$/p' -e'/^$/=' testfile.dat
[root@localhost ~]# sed -n '/a/at' testfile.dat
t
t
t
t
t
t
t
t
t
[root@localhost ~]# sed -n '/Emain/aEmail' testfile.dat
Email
Email
Email
Email
Email
Email
Email
Email
Email
[root@localhost ~]# cat testfile.dat
Name:a Emain:
Name:b Emain:
Name:c Emain:
Name:a Emain:
Name:b Emain:
Name:c Emain:
Name:a Emain:aa
Name:b Emain:bb
Name:c Emain:cc
[root@localhost ~]# sed -n '/Emain/cEmail' testfile.dat
Email
Email
Email
Email
Email
Email
Email
Email
Email
[root@localhost ~]# cat testfile.dat
Name:a Emain:
Name:b Emain:
Name:c Emain:
Name:a Emain:
Name:b Emain:
Name:c Emain:
Name:a Emain:aa
Name:b Emain:bb
Name:c Emain:cc
[root@localhost ~]# sed -n '/Emain/iEmail' testfile.dat
Email
Email
Email
Email
Email
Email
Email
Email
Email
[root@localhost ~]# cat testfile.dat
Name:a Emain:
Name:b Emain:
Name:c Emain:
Name:a Emain:
Name:b Emain:
Name:c Emain:
Name:a Emain:aa
Name:b Emain:bb
Name:c Emain:cc
[root@localhost ~]# sed '/Emain/i
> Email' testfile.dat
Email
Name:a Emain:
Email
Name:b Emain:
Email
Name:c Emain:
Email
Name:a Emain:
Email
Name:b Emain:
Email
Name:c Emain:
Email
Name:a Emain:aa
Email
Name:b Emain:bb
Email
Name:c Emain:cc
[root@localhost ~]# sed '/Emain/a
> Email' testfile.dat
Name:a Emain:
Email
Name:b Emain:
Email
Name:c Emain:
Email
Name:a Emain:
Email
Name:b Emain:
Email
Name:c Emain:
Email
Name:a Emain:aa
Email
Name:b Emain:bb
Email
Name:c Emain:cc
Email
[root@localhost ~]# sed '/Emain/c
> Email' testfile.dat
Email
Email
Email
Email
Email
Email
Email
Email
Email
[root@localhost ~]# sed '/Emain/s
> Email' testfile.dat
sed:-e 表达式 #1,字符 9:unterminated `s' command

$awk ‘{print $0}’ myfile.txt

波及和布尔运算符

运算符 意义
<  
>  
~ 匹配正则表达式
!~ 不匹配正则表达式
ll  
&&  
!  

awk操作符

赋值操作:=、 =、*=、/=、%=、^=
标准化表明式:?
或且非:||、&&、!
匹配:~、!~
关系:<、<=、>、>=、!=、==
算术: 、-、*、/、%、^
前后缀: 、--

使用变量:awk '{name=$4; price=$5;print name"t"price} ' data.f

9159金沙官网 8

二、find命令
查找具备有些特征文件的通令

$ grep  ‘^[^48]’ mydata.doc

条件语句和循环语句

if() 动作1 [else 动作2]
while() 动作
do 动作 while()
for()动作

grep一般相配

相似相配平日须要将万分的情势选用双引号括起来。

grep的一般格式为:grep [选项] 基本正则表明式 [文件]
只顾对输入的参数字符串使用双引号

grep的选项:
-c 只输出相称行的多寡
-i 不区分轻重缓急写(只适用于单字符)
-h 查询多文件时,不显示文件名
-l 查询多文本时,只输出包涵相配字符的文本名
-n 显示相称行的行号
-s 不出示官样文章或无相称文本的错误信息
-v 展现不带有相配文本的富有行

询问多个文本:能够动用文件占位符查询四个文本,也得以将八个公文列出,如:
grep "45" data*.f
grep "45" data1.f data2.f

全字相配:在合营的字符前边加上>
grep "45>" data.f
9159金沙官网 9

 

6、打印音信尾

sort

rt:对文件进行排序。将输入文件作为由多条记下组成的数据流,而记录由可变宽度的字段组成。,以换行符作为定界符,sort命令与awk同样,可将记录分成多个域进行拍卖,暗中认可的域分隔符是空格符

sort [选项] [输入文件]

选项 意义
-c 测试文件是否已经被排序
-k 指定排序的域
-m 合并两个已排序的文件
-n 根据数字大小进行排序
-o[输出文件] 将输出写入到指定的文件,相当于将输出重定向到指定文件
-r 将排序结果逆向显示
-t 改变域分隔符
-u 去除结果中的重复行

sort -t: input sort -t: -k3 input sort -t: -k3n input
-n一般不单独使用,一般位于域号之后 sort -t: -k3nr input sort -t: -u input sort -t: -k3n -o output input sort -t: -c input sort -t: -m input1 input2
input1和input2必需有序

系统grep命令

目录:ls -l grep '^d'
passwd文件:grep "angel" /etc/passed
查阅DNS服务进度(常常为named):ps  | grep "named"

1、
sort [options] files
 许多见仁见智的域按分裂的列顺序分类
 -c 测验文件是不是业已分类
 -m 合併八个分类文件
 -u 删除全数复制行
 -o 存款和储蓄sort结果的出口文件名
 -t 域分隔符,用非空格、非tab键分隔域
  n n为域号,使用此域号最初分类(这里n从0早先)
 n 钦命分类按域上的数字分类
 -r 相比较求逆
man  sort

首先种方法:使用awk脚本输入文件格式

Linux文本管理命令

awk脚本

awk脚本由各样操作和形式组成。

awk将每便读取一行,然后利用分隔符将每一行分割成多少个域。

awk语句都由方式和动作结合,情势决定动作的接触条件,即使简单方式部分,动作将随时保持推行。

awk模式,包罗三个例外字段,BEGIN和END。BEGIN使用在浏览文本动作前,之后文本浏览动作开头实行。END使用在浏览文本动作之后,打字与印刷输出文本总的数量和最终状态标记。如不特殊指明,总是相配或打字与印刷行数。

awk动作,在大括号{}内指明,多数用来打字与印刷,还也是有诸如if和循环语句等。如不特殊指明,将打字与印刷全数浏览出来的笔录。

域:awk实践动作时,将域标志为$1 $2 $3 ...,在那之中$0标志全体域。

记录:每一行正是贰个笔录

^.$ 相称大肆单字符
*.pas 匹配以*.pas结尾的保有字符或文件

  表达在num.doc 和sum.doc中有字符串“hello“。

AWK编制程序模型

awk程序由三个主输入循环维持,主输入循环自动依次读取文件行,用程序员定义的拍卖文件行的动作管理,循环施行直到终止条件。
与C,C ,Java的不等是,技士不供给关心张开文件,读取文件行,关闭文件的动作,而只关心管理行的执行动作。

9159金沙官网 10

grep

先给出示例文件data.f的原委

48    Dec    3BC1977    LPSX    68.00    LVX2A    138
483    Sept    5AP1996    USP    65.00    LVX2C    189
47    Oct    3ZL1998    LPSX    43.00    KVM9D    512
219    dec    2CC1999    CAD    23.00    PLV2C    68
484    nov    7PL1996    CAD    49.00    PLV2C    234
483    may    5PA1998    USP    37.00    KVM9D    644
216    sept    3ZL1998    USP    86.00    KVM9E    234

sed -n'2p' score.txt
man sed
info sed

$sed -n ‘2p’ myfile.txt

中央正则表明式

符号 意义
* 0个或多个字符
. 匹配任意字符
^ 行首,在[]中表示非
$ 行尾
[] 匹配字符集合
转义字符
<> 精确匹配符号
{n} 匹配n次
{n,} 匹配至少n次
{m,n} 匹配m~n次

awk脚本文件

一般来讲是一个本子文件
9159金沙官网 11

先是行代表推行脚本的一声令下和参数,!/bin/awk -f

施行时,键入脚本名称和输入文件就可以获取输出
9159金沙官网 12

find [path] [option] [-print -exec -ok]
  其中-exec格式-exec command {} ;
  -ok跟-exec类似,不过每一回实行命令前都会提示客户
  -xarg exec会倡导多少个进度,不过xarg唯有多少个
如: find ./ -perm -7 -print| xargs chmod o-w
  -name
  -perm 遵照文件权限来查找文件
  -user
  -nouser
  -group
  -nogroup 查找无有效所属组的文本
  -mtime -n n 依照文件改换时间查找,-n代表距离以后几天以内, n表示距离现在几天此前
  -size n[c] 查找文件长度为n块的文书,带有c时表示文件长度以字节计
  -newer file1 !file2 查找更换时间比文件file1新但比file2旧的文书
  -type 查找某一门类的文件
  man find 查询更加多关于find的材质
 
三、grep命令
对文件文件内容开展情势寻找

别的awk语句都有格局和动作结合。格局部分决定动作语句何时触发及触发事件。

实例

对此四个域的连天,使用awk

awk ’
//(N奥迪Q3表示读取的记录数,FNEscort表示在当下文件中的记录数,独有首先个文件技艺使得N奥迪Q5==FNR)
NR==FNR
{
a[$1 FS $2]=$0;
//约等于break,本行管理终结,处理下一行
next;
}
//最后实践到此地时,a中蕴藏的是文本1中的记录
//当文件2的$1 FS $2在a中验证多个文本这两行一样
$1 FS$2 in a
{
//将钦定列相等的笔录存款和储蓄在b中
b[FNR]=a[$1 FS $2] FS $3
}
END
{
//打印
//awk中的数组是涉嫌数组
for(i=1;i<=FNR;i )
if(i in b)
print b[i]
}’
test1 test2

awk使用printf修饰输出格式

修饰符

含义

-

左对齐

Width

域的步长,用0表示0步长

.prec

最大字符串长度,或小数点右边的位数

%c

ASCII字符

%d

整数

%e

浮点数,科学记数法

%f

浮点数,例如(123.44)

%g

awk决定使用哪种浮点数转换e或者f

%o

八进制数

只顾printf不会自行输出换行。

对ASCII的65输出字符A:awk 'BEGIN {printf "%cn",65}'
平昔列宽输出:awk '{printf "%-15s %sn",$1,$3}' data.f

9159金沙官网 13

支配流结构 从前成长轨迹2早已聊起,不再详叙

1、 保存sed 输出

实例

-w和-x选项
grep命令方式援救正则表明式,正则表明式的元字符被解释成非常意义;
-w选项表示格外整词,即以形式的字面意思去解释
如:
grep cer* *.pem
grep -w cer* *.pem
-x 是合营整行
-w 使用不便于,最佳和 -F 一同利用

类名

类名

等价的正则

 

类名

等价的正则

[[:upper:]]

[A-Z]

 

[[:alnum:]]

[0-9a-zA-Z]

[[:lower:]]

[a-z]

 

[[:space:]]

空格或tab键

[[:digit:]]

[0-9]

 

[[:alpha:]]

[a-zA-Z]

grep '[[:alpha:]]*' data.f

grep "^[^210]" file 最初既不是2、亦不是1、亦非0的公文

***************

选项

选项 意义 整词
-c 只输出匹配行的数量 count
-i 搜索时忽略大小写 ignore
-h 查询多文件时不显示文件名  
-l 只列出符合匹配的文件名,而不列出具体的匹配行 list
-n 列出所有的匹配行,并显示行号 number
-s 不显示不存在或无匹配文本的错误信息  
-v 显示不包含匹配文本的所有行 reverse
-w 匹配整词 word
-x 匹配整行  
-r 递归搜索,不仅搜索当前工作目录,而且搜索子目录 recursion
-q 禁止输出任何结果,以退出状态表示搜索是否成功 quit
-b 打印匹配行距文件头部的偏移量,以字节为单位 byte
-o 与-b选项结合使用,打印匹配的词距文件头部的偏移量,以字节为单位  
-E 支持扩展的正则表达式 Extract
-F 不支持正则表达式,按照字符串的字面意思进行匹配  

放手字符串函数

gsub(r,s)

在整个$0中用s替代r

gsub(r,s,t)

在整个t中用s替代r

index(s,t)

返回s中字符串t的第一位置

length(s)

返回s长度

match(s,r)

测试s是否包含匹配r的字符串

split(s,a,fs)

在fs上将s分成序列a

sprint(fmt,exp)

返回经fmt格式化后的exp

sub(r,s)

用$0中最左边最长的子串代替s

substr(s,p)

返回字符串s中从p开始的后缀部分

substr(s,p,n)

返回字符串s中从p开始长度为n的后缀部分

回来每行的长短:awk '{print $0"t"length($0)} ' data.f

9159金沙官网 14

****************************************************

Hello world!

向awk脚本传递参数

awk脚本内的变量能够在命令行中进行赋值,实现awk脚本传递参数,变量赋值放在脚本之后、输入文件以前,如
awk脚本 parameter=value 输入文件
awk传递的参数能够是自定义的,也足以是系统变量

调用sed有三种办法
 使用sed的命令行格式为: sed [选项] sed命令 输入文件
 使用sed脚本文件,格式为: sed [选项] -f sed脚本文件 输入文件
 sed脚本文件 [选项] 输入文件
只要未有一点点名输入文件,sed从专门的学业输入中接受输入

-n选项,突显打字与印刷定位行。

实例

awk ‘BEGIN{FS=”:”;OFS=”:”} gsub(/root/,”gridsphere”,$1)’ input awk ‘BEGIN{FS=”:”;OFS=”:”} gsub(/root/,”gridsphere”){print $0}’ input awk ‘BEGIN{print index(“gridsphere”,”ph”)}’ awk ‘BEGIN{print length(“gridsphere”)}’ awk ‘BEGIN{print match(“hello”,/h.*/)}’

awk '{print $0"t"}' score.txt
awk 'BEGIN {print "Name    Mathsn--"}{print $1"t"$4}END{"end-of-report"}' score.txt

$myawk.awk < inputfile.txt

Grep

应有尽有查找正则表明式并把行打字与印刷出来(Global search Regular Expression and Print out the line)
grep [选项][模式][文件…]

四、awk介绍
可从文件或字符串中基于钦赐准绳浏览和抽出新闻,是一种自解释的编制程序语言。由各样操作和方式组成

Hello world!

文本管理命令

文本管理命令满含对文件记录的排序、文件的联合和分隔等。具体命令:sort,uniq,join,cut,paste,split,tr,tar。这么些命令完毕了对文本记录排序,计算,合併,提取,粘贴,分隔,过滤,压缩和平化解压等功效。与sed,awk构成了Linux文本管理的具备命令和工具

4、spilt
将大文件分割为小文件
相似格局:
 spilt -output_file-size input-filename output-filename
 -b n 每个分割文件的大小n(k,m)
 -C n,每种分割文件一行最多n字节
 -l n,每一种分割文件的行数
 -n 同-l n

率先种命令行方式:

表达式

支持加( ),减(-),乘(*),除(/),模(%),乘方(^或**),自增( x,x )
四个表明式可由数值,字符常量,变量,操作符,函数和正则表明式

基本sed编辑命令
p 打字与印刷相称行

2、使用规范输入

uniq

用来去除文本文件中的一连的再一次行,类似sort -u

选项 意义
-c 只打印每行在文本中重复出现的次数
-d 只显示有重复的记录,每个重复记录只出现一次
-u 只显示没有重复的记录

计算文件中的单词数
cat input | sed ‘s/./ /g;s/=/ /g;s/,/ /g;s/// /g;s/ /n/g;s/t/n/g’| sed ‘/^$/d’|sort| uniq -c | sort -nr

七、合併与区划

= 显示文件行号 

AWK编程

2、基本元字符集及其含义
^  只相称行首
$  只相配行尾
*  相配0或多少个此单字符
[] 只相称其中字符。能够是单字符可能类别。能够用-表示当中系列范围,如[1-5]表示[12345]。个中逗号将括号内要协作的不一致字符串分开
  只用来掩饰三个元字符的新鲜意义
.  只万分狂妄单字符
pattern{n}  只用来协作前边pattern的出现次数,次数为n
pattern{n,}  含义同上。但次数最少为n
pattern{n,m} 含义同上,出现次数在n到m之间

二、sed选项:

tar

归档命令,实现了打包和平搞定压文件

tar [选项] 文件名或目录名

选项 意义
-c 创建新的包
-x 解压文件
-t 列出包内容
-f 使用压缩文件或设备,该选项通常是必须的
-z 用gzip压缩和解压缩文件,若加上此选项创建压缩包,那么解压缩时也需要加上此选项
-j bz2
-v 查看过程
-r 向宝中添加文件

gzip 压缩文件

类  等价的正则表明式
[[:upper:]] [A-Z]
[[:alnum:]] [0-9a-zA-Z]
[[:lower:]] [a-z]
[[:space:]] 空格或tab
[[:digit:]] [0-9]
[[:alpha:]] [a-zA-Z]

Hao 123

sed

sed,stream editor,流编辑器,将一多元编写制定命令作用于一群众文化艺术件文件
适用场面:

编辑相对交互式编辑器来说太大的公文 编辑命令太复杂,在交互式文本编辑器中难以输入的情事 对文本扫描二遍,不过须要实行七个编辑函数的事态

两种调用格局

sed [选项] ‘sed命令’ 输入文件 sed [选项] -f sed脚本 输入文件 ./sed脚本文件 输入文件

3、join [option] file1 file2

三、sed常规用法:

格式化输出

awk的一大功用是发生报表,报表就需求根据预约的格式化输出
printf(格式调整符,参数)

修饰符 意义
- 左对齐
width 域的步长
.prec 小数点右边的位数
0 1 2 3 4 5 6 7
格式符 %c %d %e %f %o %x %s

grep [选项] 基本正则表明式 [文件]
字符串参数最棒利用双括号括,一者幸免被误会为shell命令,二者能够用来寻找七个单词组成的字符串

d 删除定位行 

模式

字符串、变量、正则表明式

留意:只要方式中饱含空格,就需求选用双引号将方式引入来

猜忌是一开首会先读取<之后再进行while里边的

三、常用选项的选择:

sed定位文本行

选项 意义
x x为指定行
x,y 指定行范围
/pattern/ 包含模式的行
/pattern/pattern/ 包含两个模式的行
/pattern/,x 从与pattern的匹配行到x之间的行
x,/pattern/ 从x开始到pattern的匹配行
x,y! 不包括x和y的行
  • 显示文件行号
    a 在固定行号后附加新文本音信
    i 在稳固行号后插入新文本新闻
    d  删除定位行
    c 用新文本替换定位文本
    s 使用替换情势替换相应方式
    r 从另多个文件中读文件
    w 写文本到一个文本
    q 第三个形式相配后退出
    l 展现与八进制ascii代码等价的调控字符
    {} 在固化行实行的命令组
    n 从另一个文本中读文件下一行,并附加在下一行
    g 将模式2粘贴到/pattern n/
    y 传送字符

num.doc:hello

paste

用于将文件文件或专门的学问输出中的内容粘贴到新的文本,它能够未来自分化文件的数量粘贴到手拉手,形成新的文件。假使多个文件的行数不一样,少的那个为空

paste [选项] 文件1 文件2…

选项 意义
-d 默认域分隔符是空格或Tab键,设置新的域分隔符
-s 将每个文件粘贴成一行
- 从标准输入中读取数据

格局和动作
  形式部分决定动作语句哪天触发和接触事件
  动作对数据开展管理,放在大括号内指明
分割符、域和记录
  awk试行时,其浏览域标志为$1,$2,...,$n.这种措施称为域标记。$0为全数域
  注意推行时不用混淆符号$和shell提醒符

第二种艺术是将awk命令插入到多个文本,并使awk程序能够实行,然后用awk命令解释器作为脚本的首行,以便通过键入脚本名称来调用它。

AWK调用

Shell中调用
awk [-F 域分隔符] ‘awk程序段’ 输入文件 将awk程序段插入脚本文件
awk -f awk脚本文件 输入文件 将脚本文件设置为可推行
./awk脚本文件 输入文件

5、cut,paste

4、打字与印刷独立记录

数组

array[index]=value
1.涉嫌数组
涉及数组是指数组的目录能够是字符串,也足以是数字
波及数组的值无须以延续的位置举行仓库储存。
awk的兼具数组都以事关数组。使用的数字索引并不意味数组存款和储蓄地方音讯
做客数组:
for(variable in array) do something with array[variable]
判别数组中是不是存在某成分
if(index in array) do
2.split函数
split(r,s,t):以t为分隔符,将r字符串拆分为字符串数组,并贮存在s中
awk ‘BEGIN{print split(“abc/def/ghi”,str,”/”);for(i in str) print str[i]}’

六、sed介绍
一种首要的公文过滤工具,使用一行命令只怕利用管道与grep与awk相结合,是非交互性文本流编辑。
sed操作的只是一个正片。

$awk ‘{print $0}’ mydata.txt | tee newfile.txt

sed编辑命令

sed编辑命令标示对文件进行何种管理,如打字与印刷,删除,追加,插入,替换等

选项 意义
p 打印匹配行
= 打印文件行号
d 删除定位行
a 在定位行号之后追加文本
i 在定位行号之前插入文本
c 用新文本替换定位文本行
s 使用替换模式替换相应模式
r 从另一个文件中读文本
w 将文本写入另一个文本
y 变换字符
q 第一个模式匹配完成后退出
l 显示与八进制ASCII码等价的控制字符
{} 在定位行执行的命令组
n 读取下一个输入行,用下一个命令处理新的行
h 将模式缓冲区的文本复制到保持缓冲区
H 将模式缓冲区的文本追加到保持缓冲区
x 交换模式缓冲区和保持缓冲区
g 将保持缓冲区文本复制到模式缓冲区
G 将保持缓冲区文本追加到模式缓冲区

2、
uniq [option] files
 从一个文件文件中删去或禁止重复行
 -c 展现各行重复数
 -d 只体现成双重数据行,每一个重复行只展现在那之中一行
 -q 打字与印刷每一重复行现身次数
 -f n n为数字,前n个域被忽略,打字与印刷不重复行
man uniq

awk的使用:

sed命令

平凡由定点文本行和sed编辑命令两局地构成,sed编辑命令对定点文本行举办种种管理

两种办法调用awk:
1)命令行方式:
  awk[-F filed-spearator] 'command' input-files
2)awk脚本
  全部awk命令插入二个文书,用awk命令解释器作为脚本的首行,以便通过键入脚本名称来调用它
3)awk命令插入一个独立文件
  awk -f awk-script-file input-files

sed  [option]  –f  sed-script-file inputfile

AWK形式匹配

awk由格局和动作结合。情势是一组用于测量检验输入行是否供给实施语句,动作则是带有语句,函数和表明式的实施进度。即情势决定动作何时触发事件,动作推行对输入行管理
如:awk ‘/^$/{print “this is a blank line.”}’ input

while read line
do
   echo $line
done <testfile.dat
那个就能够只读入贰回,将文件内容全方位出口

n 从另三个文件中读文件下一行,并附加在下一行 

实例

1.总结空白行数
awk ‘/^$/{x =1}END{print x}’ input
2.测算平均成绩
awk ‘BEGIN{FS=”,”}{total=4 5 6 7;avg=total/4;print $1,avg}’ input

sed在文书中询问文本的不二诀要
 使用行号,能够是贰个简短数字,或是八个行号范围
 使用正则表明式
x 行号
x,y 代表行号范围从x到y
/pattern/ 查询包涵方式的行
/pattern/pattern/查询包括八个形式的行
pattern/,x 在给定行号上查询富含形式的行
x,/pattern/通过行号和方式查询相配行
x,y!查询不包罗内定行号x和y的行

5、 准确相配:

grep命令族

grep
正式grep命令,帮衬宗旨正则表达式 egrep
强大grep命令,扶助宗旨和强大正则表明式
等价于grep -E fgrep
快捷grep命令,不扶助正则表明式,依据字面意思实行相配
等价于grep -F

 

一、grep一般格式:

Linux文本管理计算

Linux文本处理命令 应用
grep 全面搜索正则表达式并把行打印出来,grep命令族:grep,egrep,fgrep
sed 流编辑,将一系列编辑命令作用于缓冲区中输入文件的副本,从而实现输入文件的各种编辑操作
awk 特点是处理结构化文件,所谓结构化,指划分为域和记录的文件
sort 对文本进行排序
uniq 去除文本的连续重复行,也可以统计重复行的数量
join 类似数据库中的连接操作
cut 从标准输入或输入文件中按行或按域提取文本
paste 用于将多个文件或标准输出中的内容粘贴而形成新的文件
split 用于将大文件切割成小文件
tr 实现字符替换功能,可以实现文本文件的过滤功能
tar 归档命令,和gzip用于实现Linux系统文件的压缩和解压

 

正则表达式 POSIX标上校正则表明式分为两类 1.中坚的正则表达式 2.恢弘的正则表明式 超越八分之四Linux应用和工具仅扶助宗旨的...

sed命令选项如下:
 -n不打字与印刷未相称行
 -e下一命令是编辑命令
 -f调用sed脚本文件

5、 情势出现的机率

嵌入字符串函数

函数名 意义
gsub(r,s) 在输入文件中用s替换r,作用域为$0
gsub(r,s,t) 在t中用s替换r,可以作用于某个域$n
index(s,t) 返回s中字符串第一个t的位置
length(s) 返回s的长度
match(s,t) 测试s是否包含匹配t的字符串
split(r,s,t) 用t分隔r,生成数组s,生成数组的元素个数
sub(r,s,t) 将t中第一次出现的r替换为s
substr(r,s) 返回字符串r中从s开始的后缀部分
substr(r,s,t) 返回字符串r中从s开始长度为t的后缀部分

4、 使用p显示行

join

连日操作将多个文件中有着同样域的记录选用出来,再将那几个记录全部的域放到一行(富含来自四个公文的全部域)
留神:文件必得有序

选项 意义
-a1或-a2 除了显示以共同域进行连接的结果外,-a1表示还显示第一个文件中没有共同域的记录,-a2则表示显示第二个文件中没有共同域的记录
-i 比较域内容时,忽略大小写差异
-o 设置结果显示的格式
-t 改变域分隔符
-v1或-v2 与-a类似,但是,不显示以共同域进行连接的结果
-1和-2 -1用于设置文件1用于连接的域,-2用于设置文件2用于连接的域

join [选项] file1 file2
有点像sql中的join

join -t: teacher.db teacher_hobby.db
默许第二个域相比较,相等就总是。 -a有一点像左外连接,右外连接
-a1 左连接 -a2右连接 -o表示突显那几个域(sql中的字段)
意味着方法为 -o1.n 2.n -i忽略大小写 -t设置域分隔符 -v取反,即不显得共同域
用法与-a类似,-v1 -v2 -1,-2表示用来再而三的域

Lisi 25 wuhan

系统变量

变量 意义
$n 当前记录的第n个域,域间由FS分隔
$0 记录的所有域
FS 字段分隔符,默认空格
RS 记录分隔符,默认换行
NR 当前记录数
NF 当前记录中的域数量
OFS 输出域分隔符,默认空格
ORS 输出记录分隔符,默认换行
FILENAME 当前文件名
ARCC 命令行参数的数量
ARGIND 命令行中当前文件的位置(从0开始标号)
ARGV 命令行参数数组
CONVEMT 数字转换格式
ENVIRON 环境变量关联数组
ERRNO 最后一个系统错误的描述
FILEDWIDTHS 字段宽度列表,以空格键分隔
FIR 浏览文件的记录数
IGNORECASE 布尔变量,如果为真,则进行忽略大小写的匹配
OFMT 数字的输出格式
RLENGTH 由match函数匹配的字符串长度
RSTART 由match函数所匹配的字符串的第一个位置
SUBSEP 数组下标分隔符,默认值是\034

sed-script-file [option] inputfile

扩展正则表明式

符号 意义
? 匹配0个或1个
匹配1个或多个
() 表示一个字符集合或用在expr中
| 表示或

$grep  -v “123” *.doc

p 打字与印刷相称行 

$inputfile.txt | myawk.awk

y 传送字符 

1、格局范围:

sum.doc:2:hao 123

a 在定点行号后附加拳文本消息 

其次种格局:

出口到文件中,同临时间出示在显示屏上。

num.doc:2:hao 123

n 三番六次到下一输入行;允许跨行的情势匹配语句。 

6、 打印形式

sed调用格式有两种:

g 将模式2粘贴到/pattern n/ 

q 第七个方式相配完结后生产或立刻推出 

num.doc:world

Lisi25

command要加单引号,也同意加双引号。

$awk ‘{print $0}’ mydata.txt >newfile.txt

显示器上不会输出结果。

sum.doc:hello world

$grep  “hello” *.doc

证实在num.doc 和sum.doc中有字符串“123“各为两行。

Wangjian 33

awk –f awk-script-file input-file

$sed -n ‘5,/Hao/’p myfile.txt

三、域和笔录

其三种办法是将拥有的awk命令插入一个独门文件,然后调用:

$sed -n ‘1,3p’ myfile.txt

sum.doc:sui yue

3、 sed编辑命令

x,y! 查找不含有钦定行号x到y的行。 

x,/pattern 通过行号和情势查询相配行。 

awk实施时,其浏览域标识为$1,$2 ….$n.。这种方法称为域标志。

首先种:使用行号,可以用简短数字可能三个行号范围。

-l查询多文件时只输出包括相称字符的文书名。

形式包罗多个出色字段BEGIN和END.,BEGIN语句使用在别的文件浏览动作之前,之后文本浏览动作依据输入文件初始实践,END语句用来在awk完结文本浏览动作后打印输出文本中输出和末段状态标识。实际动作在大括号内指明。

awk的调用格式有三种:

$sed -n ‘/123/’p myfile.txt

其三种选择第一行有所sed命令解释器的sed脚本文件:

2、 行匹配:

num.doc:Just

打印1到3行。

f 假如正在调用sed脚本文件,使用此选项。此选项公告sed脚本文件援助具有的sed命令。

 1、保存awk输出

[-F]域分隔符,是可选的,awk使用空格作为缺省的域分隔符。

grep [选项] 基本正则表达式 [文件]

缺省景况下,grep是深浅写敏感的,即使要询问大小写不灵活的字符串,必需

$ sed  ‘command’ inputfile > outfile

6、 大小写敏感:

一、awk的调用格式:

7、 在钦定行号相配形式

Sed定位文本的局地方式,如下:

二、grep常用选项:

Caiming 55

w 写文本到多少个文件 

Name Age

$ grep ‘1{2,}’ mydata.doc

x,y 代表行号范围从x到y。 

n 不打字与印刷:sed不写编辑行到标准输出,缺省为打字与印刷全体行。P命令能够用来打字与印刷编辑行。

num.doc:2:hao 123

s 使用替换情势替换相应形式 

num.doc:1:hao 123

$awk ‘BEGIN {print “Name n****** “} {print $1 } END {“end of reportn”}’ mfile.txt

$grep -n “123>” *.doc

4、相配任意字符:

$grep -i “just” *.doc 

sed浏览文件时,私下认可从第一行起头,有二种艺术定位文本:

4、 显示全数不带有“123“的行:

num.doc:hello

此命令在mydata.doc中相配字符串以字符a开端和字符z结尾,中间为私行多个字符。

c 用拳文本替换定位文本 

sed [option] ‘command’ inputfile

3、 设置大小写:

i 在一向行号后插入拳文本音信 

$ grep  ‘48[34]’ mydata.doc

-h查询多文件时不展现文件名。

 

5、打字与印刷度报纸告头

$ grep  ‘[Ss]ept’  mydata.doc

-c只输出相配行的计数。

$awk ‘{print $1,$2}’ myfile.txt

sum.doc:4:hao 1234

sum.doc:2

awk [-F field-separator] ‘commands’ input-file

c 下一指令是编写命令。使用多项编辑时走入选项。

r 从另一个文书中读文本 

Ni hao ma?

如第三点,相配“123”时,结果再次回到了“1234”的任何字符串。

{} 在定点行实践的下令组 

Hao ma?

(以上内容转自此篇文章)

第一种是命令行的法门,如下:

二、动作和情势

Caiming 55

-i不区分轻重缓急写(只用于单字符)。

$awk ‘BEGIN {print “Name Agen******************“} {print $1”t”$2}’ mfile.txt

其次种选择sed脚本文件:

-v呈现不分包相称文本的具备行。

1、 查询七个文件:

Hao 123

Wangjian 33 shanghai

num.doc:just

由于并未有格局部分,唯有动作部分,动作必需用花括号括起来。

sum.doc:2:hao 123

四、grep和正则表明式

/pattern/ 查找包括形式的行。 

其次种形式:使用重定向

其三种艺术:使用管道

sum.doc:hello world

Caiming 55 shenzhen

3、打字与印刷全部记录

此命令表达数字1起码出现五回

2、 sed在文件中追寻文本的点子

$grep –n “123” *.doc

其次种:使用正则表达式。

3、 显示满意相配方式的富有行数:

先是种方式:

-n显示相称行及行号。

此命令在mydata.doc中相称除4恐怕8开头的行。

2、 不相称行首:

此命令在mydata.doc中相配字符串“483”和“484”。

此地的正则表达式可以为字符串。在grep命令中输入字符串参数时,最棒将其用双引号括起来。调用变量时也足以使用双引号。在调用格局相配事,应利用单引号。

5、 打字与印刷范围

Lisi 25

$grep -c “123” *.doc

参考:

使用-i选项。

l 显示与八进制ASCII代码造价的决定字符 

$ grep  ‘a…z’ mydata.doc

一、sed调用格式

-s不显得荒诞不经或无相配文本的错误音信。

本文由9159.com发布于操作系统,转载请注明出处:【9159金沙官网】2.扩展的正则表达式

关键词: 9159.com 9159金沙官网