Shell中的文本处理工具

1.grep

Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的 打印出来。grep全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户。
Tips : grep -E = egrep(扩展的正则表达式)
文件内容:
在这里插入图片描述

##grep 格式##
grep 匹配条件 处理文件

grep root passwd               过滤root关键字

在这里插入图片描述

grep ^root passwd               以root开头

在这里插入图片描述

grep root$ passwd               以root结尾

在这里插入图片描述

grep -i root passwd                忽略大小写

在这里插入图片描述

grep -E "\<root" passwd            root字符之前不能有字符

在这里插入图片描述

grep -E "root\>" passwd            root字符之后不能有字符

特殊符号都是扩展的正则表达式中的,所以应该加上-E参数
在这里插入图片描述
roothaha 就不见了。

grep -数字               显示过滤行以及上面几行和下面几行,A为文件名。

在这里插入图片描述

grep -n                   显示匹配的行所在行号

在这里插入图片描述

grep -A                   显示过滤行以及下面几行
grep -B                   显示过滤行以及上面几行

在这里插入图片描述

grep -v                    反向过滤

在这里插入图片描述
grep字符数量匹配规则
在这里插入图片描述

^westos                     以westos开头
westos$                     以westos结尾

在这里插入图片描述

w....s                     w开头s结尾中间4个任意字符

在这里插入图片描述

.....s                      s结尾前面5个任意字符

在这里插入图片描述

*                       字符出现0到任意次

在这里插入图片描述

?                       0到1次

在这里插入图片描述

+                       1到任意次

在这里插入图片描述

{n}                       n次

在这里插入图片描述

{m,n}                      m到n次

在这里插入图片描述

{0,n}                      0-n次

在这里插入图片描述

{,n}                       0-n次

在这里插入图片描述

{m,}                      最少m次

在这里插入图片描述

(lee){2}                     lee字符串出现2次,lee要用括号括起来

在这里插入图片描述

2.sed

sed是stream editor的缩写,一种流编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有改变,除非你使用重定向存储输出。sed主要用来自动编辑一个或多个文件,简化对文件的反复操作,编写转换程序等。

命令格式:

sed 参数 命令 处理对象

在这里插入图片描述
##-b显示行号,可以看出只有第五行的内容被打印出来了。

sed 参数 处理对象 -f 处理规则文件

在这里插入图片描述

对字符的处理

-n          ##静默模式,只显示进行处理的那一行。
-e         #多条策略。
p           ##打印,显示print

sed -n 5p westos                  显示第五行

在这里插入图片描述

sed -n 3,5p westos                 显示3到5行

在这里插入图片描述

sed -ne "3p;5p" westos                显示3和5行

在这里插入图片描述

sed -ne 1,5p westos                 1-5行

在这里插入图片描述

sed -ne '5,\$p' westos                5到最后以行

在这里插入图片描述

sed -n '/^#/p' fstab                  显示以#开头的行

在这里插入图片描述


d  删除

sed 5d westos                 删除第五行

在这里插入图片描述

sed  '/^#/d'  fstab               把 # 开头的行删除

在这里插入图片描述

sed  '/^UUID/!d'  fstab             除了UUID以外的行都删除

在这里插入图片描述

sed -e '5,$d' westos              第五行删到最后

在这里插入图片描述


a   添加

sed  -e  '\$a hello world'  westos

在这里插入图片描述

sed -e  '$a hello\nworld'  westos    \n换行

在这里插入图片描述

sed  -e '/^#/a hello world' fstab

在这里插入图片描述


c  替换

sed -e '/^#/c hello world' fstab                    以'#'开头的行都替换为 helloworld

在这里插入图片描述

sed '5c hello world' westos

在这里插入图片描述


w     把符合的行写到指定文件中

sed '/^UUID/w westofile' westos        把westos中UUID开头的行写入westosfile中

在这里插入图片描述

i   插入

sed '5ihello westos' westos

在这里插入图片描述
a 是插入到下面,i 是插入到上面


r   整合文件

sed  '5r hah'  westos            把hah文件的内容整合到westos文件第五行下面

在这里插入图片描述

sed 字符替换

sed 's/: /###/g' westos         把全文的: 替换为'###'

在这里插入图片描述

sed 's/: /###/' westos            仅替换第一列

在这里插入图片描述

sed '1,5s/: /###/g' westos                1到5行

在这里插入图片描述

sed '1s/: /###/g' westos          替换第一行

在这里插入图片描述

sed '1s/: /###/g;5s/: /###/g' westos        替换第一行和第五行

在这里插入图片描述

sed '/lp/,/shutdown/s/: ###/g' westos       替换lp 和shutdown之间的:

在这里插入图片描述

sed 's/\//####/g' westos        替换/为###

在这里插入图片描述

sed 's@/@####@g' westos            @的作用和/一样

在这里插入图片描述

sed 's@/@####@g' -i westos                    把sed处理的内容保存到westos文件中

在这里插入图片描述
可见处理的内容已经更改到了源文件中。

3.awk

发布了36 篇原创文章 · 获赞 13 · 访问量 1436

猜你喜欢

转载自blog.csdn.net/thermal_life/article/details/105118036