图文详解shell中的文本处理工具

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

目录

前言

一、grep

1.grep 格式

2. grep字符数量匹配规则

3.练习脚本

二、sed 

1.对字符的处理

2. 字符替换

三、awk

练习


前言

本章来学习文本处理工具包含grep命令用于查找文件里符合条件的字符串。sed命令会将对象的所有内容加载到内存中内存的模式空间逐行处理符合条件的操作不符合条件的直接显示。awk命令是文本数据处理工具也叫报告生成器用来生成报告。

一、grep

文本处理工具

1.grep 格式

grep 匹配条件 处理文件


grep root passwd         #过滤root关键字
grep -i root passwd         ##后略大小写
grep -E "\<root" passwd         ##root字符之前不能有字符
grep -E "root\>" passwd         ##root字符之后不能有字符
grep -数字         ##显示过滤行以及上面几行和下面几行
grep -n         ##显示匹配的行所在行号
grep -A         ##显示过滤行以及下面几行
grep -B         ##显示过滤行以及上面几行
grep -v         ##反向过滤

首先cp /etc/passwd . 适当的删减一些内容方便我们操作

含有root的全部显示使用的是贪婪模式含有的都会显示出来

 

一起输出的两种写法 

grep -E = egrep 

条件字符串可以被grep识别e 表示多个条件用e连接 E表示搜索条件的正则表达式的拓展条件被识别

防止贪婪模式向前贪婪或者向后贪婪

 

 

 

 

2. grep字符数量匹配规则

^westos         ##以westos开有
westos$         ##以westos结尾
w....s         ##w开头s结尾中间4个任意字符
.....s         ##s结尾前面5个任意字符
*         ##字符出现任意
?         ##0到1次
+         ##1次到任意次
{n}         ##n此
{m,n}         ##m到n次
{0,n}         ##0-n次
{,n}         ##0-n次
{m,}         ##最少m次
(lee){2}         ##lee字符串出现2次

 

 

3.练习脚本

请显示系统中能被su命令切换的用户名称


 

二、sed 

流编辑器

将对象的所有内容加载到内存中内存的模式空间逐行处理符合条件的操作不符合条件的直接显示

命令格式
sed 参数 命令 处理对象
sed 参数 处理对象 -f 处理规则文件

显示第几行呢一行就会多显示 一次

  

1.对字符的处理

p                 ##显示
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' fstab
sed -e '$a hello\nworld' fstab
sed -e '/^#/a hello world' fstabc                 ##替换
sed -e '/^#/c hello world' fstab
sed '5chello world' westos

 

 

w                 ##把符合的行写到指定文件中
sed '/^UUID/w westofile' westos         ##把westos中UUID开头的行写入westosfile中

i                 ##插入
sed '5ihello westos' westos

写在前面

r                 ##整合文件
sed '5r haha' westos

2. 字符替换

sed 's/:/###/g' westos
sed 's/:/###/' westos
sed 's/:/###/g' westos
sed '1,5s/:/###/g' westos
sed '1s/:/###/g' westos
sed '1s/:/###/g;5s/:/###/g' westos
sed '/lp/,/shutdown/s/:/###/g' westos
sed 's/\//####/g' westos
sed 's@/@####@g' westos


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

不写g会把每行出现的 第一个关键字换掉后面的都不换 

 

 

 

 

 

把想要处理的规则写在文件内 

 

以上是sed的一些常用的用法sed的可玩性非常高可以更多浏览参考文档自己练习。

行首行尾加东西

三、awk

报告生成器

awk -F 分隔符 BEGIN{}{}END{} FILENAME


NR #行数
NF #列数
FILENAME #文件名称本身
westos #westos变量值
“westos” #westos字符串


/bash$/ #条件
/条件1|条件2/ #条件1或者条件2
/条件1/||/条件2/ #条件1或者条件2
/条件1/&&/条件2/ #条件1并且条件2


$0 #所有的列
$1 #第一列
$2 #第二列
$3 #第三列


#/etc/passwd文件的第六列没有home关键字并且以bash结尾的行
awk -F : '$6!~/home/&&/bash$/{print}' /etc/passwd

 

 

 

 

 

 

没有引号代表变量有代表字符串

 

 

 

 

练习

ifconfig ens160可以查看ip等内容现在只想要ip

 

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: shell

“图文详解shell中的文本处理工具” 的相关文章