linux文本处理工具——grep、sed、awk用法

简介: linux文本处理工具——grep、sed、awk用法

linux文本处理工具
1.grep
1.字符的过滤grep
2.grep的基础搜索文本指令
3.grep命令字符数量匹配规则
2.sed 字符替换
p 显示
d 删除
a 添加
c 替换
w 写入(将符合条件的行写入指定文件中)
i 插入
r 整合(整合文件内容到指定行)
s 替换关键字
3.awk
awkd的用法
练习:
1.grep
1.字符的过滤grep
grep命令是linux下的文本处理工具,这些命令都是用于对一个文件和文本执行重复搜索的工具。我们可以通过grep命令指定特定的搜索条件来搜索文件及其内容以获取有用的信息。 grep时全局搜索,其抓取数据是贪婪模式,即不会漏掉过滤内容,但准确性也会降低

2.grep的基础搜索文本指令
egrep = grep -E
grep -e ”root|nologin“ passwd 搜索含有root和nllogin的行 = grep -e root -e nologin passwd (同时过滤两个目标)
grep -i root passwd 忽略大小写
grep -E “” passwd 搜索字符不能有后缀
grep -E “” passwd 搜索字符前后都不能有后缀
grep -n westos passwd 显示匹配的行所在行号
grep -5 westos passwd 显示过滤行及前后5行将会显示
grep -B5 westos passwd 显示含有关键字的行及以上5行
grep -A5 westos passwd 显示含有关键字的行及以下5行
grep -v root passwd 显示不含有root的过滤行(反选)

3.grep命令字符数量匹配规则
grep ^westos westos 以westos开头
grep westos$ westos 以westos结尾
grep w.s westos ws之间有任意一个字符的
grep w…s westos ws之间有任意三个字符的
grep -E “w.*s“ westos 表示字符出现了任意次
grep -E "was" westos a出现了任意次
grep -E “wa{2}s” westos a出现了两次
grep -E “wa?s” westos a出现了0-1次
grep -E ‘w.+s’ westos 含有任意字符出现一次以上
grep -E ‘w.{3,}s’ westos 含有最少三个任意字符
grep -E ‘w.{,3}s’ westos 最多三个
grep -E ‘w.{1,3}s’ westos 1-3个
grep -E ‘w(ab){3,}s’ westos 含有字符串最少3个的所在行

练习:
使用脚本把主机中可以su切换的用户过滤出来

!/bin/bash

grep -E "bash$|sh$" /etc/passwd | cut -d : -f 1

1
2
3
2.sed 字符替换
不输出模式空间的内容,只输出处理过的内容

p 显示
sed -n 5p passwd 显示第五行内容
cat -b passwd | sed -n 3,5p 显示3-5行
cat -b passwd | sed -n ‘3p;5p’ 显示3行和5行 (-b 显示输出行号)
cat -b passwd | sed -n ‘/^root/p’ 显示root开头的行
sed -n ‘bash/ p ′ p a s s w d 显 示 以 b a s h 结 尾 的 行 s e d − n ′ 5 , /p' passwd 显示以bash结尾的行 sed -n '5,/p

passwd显示以bash结尾的行sed−n

5,p’ passwd 显示第5行到最后一行
sed -n ‘$p’ passwd 显示最后一行

d 删除
cat -b passwd | sed ‘5,8d’ 删除5-8行
cat -b passwd | sed -e ‘5d;8d’ 删除5和8行
sed -e ‘/^root/d’ passwd 删除以root开头的行
sed -e ‘/bash$/d’ passwd 删除bash结尾的行

a 添加
sed ‘2aleeleelee’ westos 在第2行之后添加leeleelee
sed ‘hello/aleeleelee’ westos 在hello后加leeleelee
sed ‘$aleeleelee’ westos 在最后一行后面加leeleelee

c 替换
sed ‘1chahaha’ westos 第一行替换为hahaha
sed ‘/linux/chahaha’ westos 将linux替换为hahaha

w 写入(将符合条件的行写入指定文件中)
sed ‘/nologin$/wwestosfile’ passwd 将passwd中以nologin结尾的行全部写入到westosfile中

i 插入
r 整合(整合文件内容到指定行)
sed ‘2rlee’ westos 将lee整合到westos中的第二行之后
sed ‘hello/rlee’ westos 将lee文件内容整合到westos中hello行之后

s 替换关键字
(g表示所有关键字的列,如果不加g则默认替换每行出现的第一列)

sed ‘s/a/b/g’ test 将test中的a全部替换成b
sed ‘s/sbin/westos/g’ passwd 将sbin替换为westos
sed ‘4,5s/sbin/westos/g’ passwd 4-5行的sbin替换成westos
sed ‘$s/sbin/westos/g’ passwd 最后一行
sed ‘s///###/g’ passwd 将全文的/替换为#,\是转译/不是命令而是单纯的字符 或者可以将/写成@ 即 sed ‘s@/@###@g’ passwd
保存:
sed ‘s@/@###@g’ -i passwd 将sed处理的内容保存在原文件中

练习:
编写一个脚本,使得其可以输入一个端口,http的端口就改为这个数字
思路:
1.先确保运行脚本时输入了数字,不能为空
2.确认主机下载了该服务
3.确认服务已经启动
4.改变http配置文件的端口,并重启
5.显示http服务改变后的端口

!/bin/bash

setenforce 0 &> /dev/null

[ -z "$1" ] && {
echo "Errow:Please input port following script !!"
exit
}

rpm -q httpd &> /dev/null || {
echo "Errow:Apache is not installed !!"
exit
}

systemctl status httpd | grep "running" &> /dev/null || {
echo "Eroow:Apache is not running !!"
exit
}

netstat -antlupe | grep -E ":$1>" &> /dev/null && {
echo "Errow: $1 is in used !! "
exit
}

sed "/^Listen/cListen $1" -i /etc/httpd/conf/httpd.conf
systemctl restart httpd

netstat -antlupe | grep http
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
3.awk
awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大。简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。

$0 表示显示所有列
$1 只显示第一列
$2 只显示第二列

awkd的用法
(1) 使用awk命令,首先输出显示westos,接着-F指定以:为分隔符截取显示passwd文件的第一列,最后输出显示end

BEGIN:运行处理策略之前的动作 print $1: 处理动作 END:处理结束所作事情

注意: ‘ ’引起来的截取策略中的字符串需要用“ ”引起来,否则awk命令会将其当作变量处理(即不会输出显示指定字符串本身)

awk -F : BEGIN’{print “name”}{print $1}END{print “end”}’ westos

(2)使用awk命令统计passwd文件行数:给变量N赋初值为0,awk每读取一行文件内容变量N就进行一次自加操作,最后输出变量N的值即为passwd文件的行数
awk -F : ‘BEGIN{westos=0}{westos++}END{print westos}’ westos

(3)
awk -F : ‘{print NF}’ westos NF表示统计列数
awk -F : ‘{print NR}’ westos NR表示统计行数

awk -F : ‘/nologin$/{print $1,$7}’ westos 显示以nologin结尾的行

awk -F : ‘/nologin$|^root/{print $1,$7}’ westos 条件中两个元素是或的关系,以nologin结尾或root开头

awk -F : ‘/bash$/&&/^root/{print $1,$7}’ westos 两个条件是且的关系,同时符合bash结尾以root开头

awk -F : '$7~/bash$/{print $0}' westos

显示第7列是以bash结尾的结果(结果显示所有列)

awk -F : '$7!~/bash$/{print $0}' westos

第7列不是以bash结尾的

awk -F : '{print FILENAME}' westos #FILENAME:要处理的文件名称
1
2
3
4
5

练习:
用awk指令找出主机中可以登陆且家目录不在/home下的用户数量

awk -F : 'BEGIN{N=0}$6!~/^\/home/&&/bash$|sh$/{N++}END{print N}' /etc/passwd
1

用awk指令一次抓取出ifconfig中的ip

ifconfig ens3 | awk '/\/{print $2}'
1

文章知识点与官方知识档案匹配,可进一步学习相关知识
CS入门技能树Linux实用命令sed命令34993 人正在系统学习中
————————————————
版权声明:本文为CSDN博主「已认证运维工程师」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_60200126/article/details/119683458

目录
相关文章
|
7月前
|
安全 Linux Shell
四、Linux核心工具:Vim, 文件链接与SSH
要想在Linux世界里游刃有余,光会“走路”还不够,还得配上几样“高级装备”。首先是Vim编辑器,它像一把瑞士军刀,让你能在命令行里高效地修改文件。然后要懂“软硬链接”,软链接像个快捷方式,硬链接则是给文件起了个别名。最后,SSH是你的“传送门”,不仅能让你安全地远程登录服务器,还能用scp轻松传输文件,设置好密钥更能实现免-密登录,极大提升效率。
510 5
|
7月前
|
Unix Linux 程序员
Linux文本搜索工具grep命令使用指南
以上就是对Linux环境下强大工具 `grep` 的基础到进阶功能介绍。它不仅能够执行简单文字查询任务还能够处理复杂文字处理任务,并且支持强大而灵活地正则表达规范来增加查询精度与效率。无论您是程序员、数据分析师还是系统管理员,在日常工作中熟练运用该命令都将极大提升您处理和分析数据效率。
570 16
|
7月前
|
安全 Linux iOS开发
SonarQube Server 2025 Release 5 (macOS, Linux, Windows) - 代码质量、安全与静态分析工具
SonarQube Server 2025 Release 5 (macOS, Linux, Windows) - 代码质量、安全与静态分析工具
318 0
SonarQube Server 2025 Release 5 (macOS, Linux, Windows) - 代码质量、安全与静态分析工具
|
8月前
|
数据采集 编解码 运维
一文讲完说懂 WowKey -- WowKey 是一款 Linux 类设备的命令行(CLT)运维工具
WowKey 是一款面向 Linux 类设备的命令行运维工具,支持自动登录、批量执行及标准化维护,适用于企业、团队或个人管理多台设备,显著提升运维效率与质量。
|
Linux Go 数据安全/隐私保护
linux常用命令手册 用户管理useradd 文件权限管理chmod 搜索管理find grep
linux常用命令手册 用户管理useradd 文件权限管理chmod 搜索管理find grep
259 2
|
机器学习/深度学习 存储 Linux
linux中强大且常用命令:find、xargs、grep
linux中强大且常用命令:find、xargs、grep
1109 9
|
Unix Linux Shell
linux命令之grep
linux命令之grep
261 2
|
Linux
初学[Linux]基础命令“which,find,grep,wc“,管道符: “ | “
初学[Linux]基础命令“which,find,grep,wc“,管道符: “ | “
371 1
|
Linux Perl
linux(四十)文件和目录相关命令grep
linux(四十)文件和目录相关命令grep
144 0
|
Shell Linux
Linux查看文件内容命令:cat、more、less、head、tail、grep、wc(上)
1 查看文件内容 1.1 cat命令 cat( 英文全拼:concatenate )命令的用途是连接文件或标准输入并打印。这个命令常用来显示文件内容,或者将几个文件连接起来显示,或者从标准输入读取内容并显示,它常与重定向符号配合使用。
1419 0

热门文章

最新文章