Linux三剑客

正则表达式

元字符功能
^匹配行首:表示匹配以某个字符开头的行 例如:^s 匹配s开头的行
$匹配行尾:表示匹配以某个字符结尾的行 例如:s$ 匹配s结尾的行
^$空行:表示匹配空行
.匹配任意单个字符
*匹配其前面的字符任意次
[]匹配指定范围外的任意单个字符
.*任意长度的任意字符
s\{n\}用来匹配前面s出现的次数,n为限定的次数
s\{n,\}用来匹配前面s出现的最少次数,n为限定的最少次数
s\{n,m\}用来匹配前面s出现的次数,次数被限定在n与m之间

Grep

grep擅长过滤,是linux中最常用的“文本处理工具”之一,适合单纯的查找或匹配文本。grep是可以利用“正则表达式”进行“全局搜索”的工具,grep会在文本文件中按照指定的正则进行全局搜索,并将结果打印出来。当然不和正则表达式结合也可以使用grep。

  1. 基本用法
# grep [选项] 正则表达式 [目标文件]
grep [OPTIONS] PATTERN [FILE...]    

# grep [选项] -e 正则表表达式 或 -f 包含正则表表达式的文件 [目标文件]
grep [OPTIONS] [-e PATTERN | -f FILE] [FILE...]   
  1. 常用选项
-v:输出不带关键字的行(反向查询,反向匹配)

-n:显示结果所在行号

-i:在搜索的时候忽略大小写

-o:只显示符合条件的字符串,但是不整行显示,每个符合条件的字符串单独显示一行

-r: 当前目录所有文件中查找

-e:实现多个选项的匹配,逻辑 or 关系

-E:使用扩展正则表达式,而不是基本正则表达式,在使用 "-E" 选项时,相当于使用 egrep

-w:匹配整个单词,如果是字符串中包含这个单词,则不作匹配

-c:统计匹配到的行数,注意,是匹配到的总行数,不是匹配到的次数

-Ax:在输出的时候包含结果所在行之后的指定行数,这里指之后的x行,A:after

-Bx:在输出的时候包含结果所在行之前的指定行数,这里指之前的x行,B:before

-Cx:在输出的时候包含结果所在行之前和之后的指定行数,这里指之前和之后的 x 行,C:context

-P:表示使用兼容 perl 的正则规则
  1. 使用用例
    a> 通过常用选项进行查找
    在这里插入图片描述b> 查找以x开始,以3结尾的行
    在这里插入图片描述

sed

sed数据修改,适合编辑匹配到的文本。sed是一个流编辑器,一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。然后读入下行,执行下一个循环。

  1. 基本用法
sed [option] 'script' [input file]...

1> option部分

-n:不输出模式空间中未匹配上的内容stdout,详情可以看4.3高级用法;
-e:可以在sed命令中指定多个script脚本,多点编辑功能;
-f:输入sed脚本,脚本中写着编辑命令;
-r:支持使用扩展的正则;
-i:直接编辑源文件;

2> script地址定界
a>定界-空地址:不给地址即对全文进行处理
b>定界-单地址:

n:指定第n行,对特定行进行编辑。例:sed -n '1p' grep_test  仅输出grep_test文件中的第一行;
/pattern/:被指定模式所能匹配到的每一行。这里的pattern不是扩展正则表达式,若要用扩展的正则表达式,需要在option中使用-r。例:sed -n '/xlzk/p' grep_test  输出在grep_test文件中匹配到xlzk内容的每一行。

在这里插入图片描述

c>定界-范围:

n,m:定位从第n行开始到第m行结束[n,m];
n,+k:定位从第n行开始,包括往后的k行;
n,/pattern/:定位从第n行开始,至指定模式匹配到的那一行;
/pattern1/,/pattern2/:定位从pattern1模式匹配开始,直到pattern2模式匹配之间的范围。

在这里插入图片描述

d>定界-步进方式:

1~2:以1为起始行,然后步进2行向下匹配,即所以的奇数行;
2~2:以2为起始行,然后步进2行向下匹配,即所以的偶数行。

e>编辑操作:

d:删除模式匹配到的行,并立即启用下一轮循环。例:sed '/000/d' grep_test
p:打印与替换命令中指定的模式匹配的行,通常与-n选项一起使用。
a:表示在匹配到的行后面增加文本,使用\n支持多行追加,a放在定界后面。例:sed '1a first_line\nsecond_line' grep_test 即在第一行后面插入两行内容(first_line和second_line)
i:在匹配到的行前面增加文本,i放在定界后面。例:sed '3i hi' grep_test 即在第三行前面插入hi。
c:替换匹配行为指定的文本。例:sed '/xlzk/c xlzkabc' grep_test 把匹配到的行替换为xlzkabc。
w:保存模式空间中匹配的内容到指定位置。例:sed -n '/^[^#]/w /grep_test_1' grep_test 即将grep_test中非'#'开头的行输出保存到grep_test_1。
r:读取指定文件的内容添加到当前文件匹配到的行后面,进行文件合并。例:sed '2r grep_test_2' grep_test 即将grep_test_2文件中的内容读取,并插入到grep_test文件的第二行处。
!:条件取反,模式空间中匹配行取反处理。用法:
s///:条件替换,这里的/可以用其他特殊符号,其替换分隔符的判定标准是s字符后的第一个特殊符号。这在替换文本中涉及特殊符号时特别好使,我们避开需要替换的特殊符号即可。即 sed 's@root@me@g' grep_test 等同于 sed 's/root/me/g' grep_test。
替换标记备注:g是全局替换、p是显示替换成功的行

在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

awk

报告生成器,拥有强大的文本格式化能力。awk是一门编程语言,支持条件判断、数组、循环等功能。所以也可以理解成一个脚本语言解释器。
基本用法
1、语法

awk [option] 'PATTERN{ACTION STATEMENTS}' FILE
PATTERN部分决定动作语句何时触发及触发事件BEGIN,END
ACTION STATEMENTS对数据进行处理,放在{}内指明print,printf

awk按照行来读取文档,根据输入分隔符切分成小部分(用内建变量来表示$0,$1,$2等),用ACTION STATEMENTS来处理该行文本。$0表示显示整行。
2、常用选项option

-F:指名输入字段的分隔符;
-v:用来实现自定义变量var=value;

3、PATTERN用于定界

``:表示处理文件的所有行;
/pattern/:表示处理正则匹配对应的行;
!/pattern/:表示处理正则不匹配的行;
关系表达式:比如NR>2等返回布尔类型的表达式。若结果为真则处理,假则不处理。对于非0非空字符串为真,其余为假。
n:表示处理第n行的文本,注意这里不支持直接给出数字的格式,例如1,2{...}BEGIN/END模式:BEGIN{}表示仅在开始处理文件中的文本之前执行一次的程序,例如打印表头。END{}表示文本处理完成之后执行一次,例如汇总数据。

在这里插入图片描述
4、内建变量(在引用变量时不用加$)

FS:input field seperator:输入字段分隔符,默认空白字符。也可使用-v指定。
OFS:输出字段分隔符。使用-v指定。
RS:输入时的换行符
ORS:输出时的换行符
NF:number of field 每一行的字段数量。加上$NF表示最后一列。
NR:number of record 文件的行数,打印出来是打印行号
FNR:多个文件中的行数分别计数
FILENAME:当前文件的文件名
ARGC:参数命令行中参数的个数
ARGV:返回数组,命令行中的每个参数
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值