文本处理工具 awk

本文详细介绍了Linux中常用的命令行工具grep、sed和awk的使用方法。grep用于搜索文件中的特定模式,如查找包含特定关键字的行;sed则提供了文本编辑的能力,包括行的删除、添加、替换等操作;awk则是一个强大的文本分析工具,通过指定字段进行处理。文章通过实例展示了如何利用这些工具进行系统管理和数据处理,例如查找能SU切换的用户、修改配置文件内容等。
摘要由CSDN通过智能技术生成

grep

grep
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字符之后不能有字符
grep -数字 显示过滤行以及上面几行和下面几行
grep -n 显示匹配的行所在行号
grep -A 显示过滤行以及下面几行
grep -B 显示过滤行以及上面几行
grep -v 反向过滤

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次

做脚本 使得可以查出系统中能SU切换的用户的名称!!
在这里插入图片描述
测试结果如下!
在这里插入图片描述

sed

sed命令主要的格式
sed 参数 命令 处理对象

对字符的处理
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 显示以#开头的行
在这里插入图片描述

sed -n '/^s/p passwd 找到以s开头的行!!
在这里插入图片描述
d 删除
sed 5d passwd 删除第五行
sed ‘/^#/d’ passwd 把#开头的行删除
sed ‘/^halt/!d’ passwd 除了UUID以外的行都删除
sed -e ‘5,$d’ passwd
-e 表示 : 多行策略
在这里插入图片描述

a 添加
sed -e ‘ a h e l l o w o r l d ′ p a s s w d 表 示 最 后 添 加 h e l l o w o r l d s e d − e ′ a hello world' passwd 表示最后添加hello world sed -e ' ahelloworldpasswdhelloworldsedea hello\nworld’ passwd 表示最后添加: 一行hello 一行world
sed -e ‘/^mail/a hello world’ passwd 表示添加在以mail开头的一行下面!
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
c 替换
sed -e ‘/^mail/c hello world’ passwd mail 开头的行换为hello world
sed ‘5chello world’ passwd 表示第五行换为hello world
在这里插入图片描述

w 把符合的行写到指定文件中
sed ‘/^mail/w westosfile’ passwd 把passwd中开头的行写入westosfile
在这里插入图片描述
i 插入
sed ‘5ihello westos’ passwd
在这里插入图片描述
r 整合文件
sed ‘5r haha’ passwd

以上都是替换关键行 或者某一行!!
下面替换 关键字
sed 字符替换
sed ‘s/😕###/g’ passwd
sed ‘s/😕###/’ passwd
sed ‘1,5s/😕###/g’ passwd
sed ‘1s/😕###/g’ passwd
sed ‘1s/😕###/g;5s/😕###/g’ passwd
sed ‘/lp/,/shutdown/s/😕###/g’ passwd
sed ‘s///####/g’ passwd
sed ‘s@/@####@g’ passwd
在这里插入图片描述
不加g之替换一列
在这里插入图片描述
替换1,5行
在这里插入图片描述
替换以字母开头两行之间的所有行!
在这里插入图片描述
sed ‘s@/@####@g’ -i westos 把sed处理的内容保存到westos文件中

加上-i就会更改文件的内容并保存!
在这里插入图片描述

练习!
Apache_port.sh
此脚本后介入数字
http的端口就改为此数字
假设selinux为关闭状态

思路!!!
先判断脚本执行的时候 后面有没有写端口数字!
然后判断服务安了没!
然后判断是否是root用户 不然不能改端口
然后抓出想要设置的端口号,让系统检测是否设置了 如果设置了就报错!
如果以上都成功就修改/etc/httpd/conf/httpd.conf的Listen/cListen行并 -i 修改文件的内容!
重启服务即可!!!!

在这里插入图片描述

测试
刚开始没有安装服务 都会报错
在这里插入图片描述
在这里插入图片描述

awk

wk:报告生成器
处理机制:awk会逐行处理文本,支持在处理第一行之前做一些准备工作,以及在处理完最后一行做一些总结性质的工作,在命令格式上分别体现如下
BEGIN{}:读入第一行文本
END{}:处理完最后一行文本之后执行,一般用来输出处理结果
awk -F 分隔符 BEGIN{}{}END{} FILENAME
比如:
awk -F : ‘BEGIN{print “userlist:”}{print $1}END{print “end”}’ passwd
在这里插入图片描述

NR #行数
NF #列数
在这里插入图片描述

FILENAME #文件名称本身
westos #westos变量值
“westos” #westos字符串

/bash$/ #条件
/条件1|条件2/ #条件1或者条件2
/条件1/||/条件2/ #条件1或者条件2
/条件1/&&/条件2/ #条件1并且条件2
在这里插入图片描述

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

在这里插入图片描述

在这里插入图片描述

awk -F : ‘/root/{print $1}’ passwd
##含root关键字
awk -F : ‘!/root/{print $1}’ passwd
##不含root关键字
在这里插入图片描述

测试

统计在系统中能su切换的并且用户家目录不在/home下的用户数量
如超级用户root,pwd-/root
方法!::
awk -F : ‘BEGIN{n=0}KaTeX parse error: Undefined control sequence: \/ at position 6: 6!~/^\̲/̲home/&&/bash|sh$/{n++}END{print n}’ /etc/passwd
##以bash和sh结尾的用户---->登陆系统
在这里插入图片描述

实验
要求:过滤网卡ens3的IP

ifconfig ens3 | awk ‘/inet>/{print $2}’
在这里插入图片描述
实验
awk统计/etc/passwd的行数
awk抓取最后一行所用的shell
思路!
awk -F : ‘END{print NR}’ /etc/passwd
awk -F : ‘END{print $NF}’ /etc/passwd

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dudududu--

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值