二十六、Linux下shell的文本处理工具

本文详细介绍Linux环境下使用grep、sed及awk进行文本处理的方法。涵盖正则表达式匹配、字符替换与处理、行筛选等核心技能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

二十六、Linux下shell的文本处理工具

26.1 grep(全局搜索正则表达式)

26.1.1 grep介绍

grep (缩写来自Globally search a Regular Expression and Print)——全局搜索正则表达式,是一种强大的文本搜索工具,它能使用特定模式匹配搜索文本,并默认输出匹配行。Unix的grep家族包括grep、egrep和fgrep。egrep和fgrep的命令只跟grep有很小不同。egrep和fgrep都是grep的扩展,支持更多的re元字符,fgrep就是fixed grep或fast grep,它们把所有的字母都看作单词,也就是说,正则表达式中的元字符表示回其自身的字面意义,不再特殊。linux使用GNU版本的grep。它功能更强,可以通过-G、-E、-F命令行选项来使用egrep和fgrep的功能。

26.1.2 grep的基本命令

26.1.2.1 grep的格式
  • grep的基本格式命令

grep -E=egrep

命令意义
grep root passwd过滤passwd文件中root关键字
grep ^root passwd过滤passwd文件中以root开头的
grep root$ passwd过滤passwd文件中以root结尾的
grep -i root passwd过滤忽略大小写
grep -E “<root" passwdroot字符前不能有字符
grep -E “root>” passwdroot字符后不能又字符
grep -n root passwd显示匹配的行所在行的行号
grep -A root passwd显示过滤行以及下面的几行
grep -B root passwd显示过滤行以及上,面的几行
grep -v反向过滤
grep -数字显示过滤行以及上下几行
  • 实践



    在这述
26.1.2.2 grep 字符数量匹配规则
  • 基本命令
命令意义
^weoopp以weoopp开头的
weoopp$以weoopp结尾的
w…p以w开头以p结尾,中间有四个字符
…p前面有六个字符以p结尾
*字符出现0到任意次
?字符出现0到1次
+字符出现1到任意次
{n}字符出现n次
{m,n}字符出现m到n次
{0.n}字符出现次数小于等于n次
{,n}字符出现次数小于等于n次
{m,}字符出现次数大于等于m次
(ee){2}ee字符串出现两次
  • 实践

    在述
26.1.2.3 grep练习
  • 显示系统中能被su命令切换的用户名称

26.2 sed

26.2.1 sed介绍

  • 基本介绍

SED(Stream EDitor)是一项Linux指令,功能同awk类似,差别在于,sed简单,对列处理的功能要差一些,awk的功能复杂,对列处理的功能比较强大

26.2.2 sed基本命令

26.2.2.1 sed对字符处理
  • 基本命令
分类命令意义
p;n /显示sed -n 5p weoopp显示文件第五行 n—不显示模式空间里的内容
sed -n 3,5p weoopp显示文件三到五行
sed -ne “3p;5p” weoopp显示三和五行,e-----表示多条策略
sed -ne ‘5,$p’ weoopp显示第五行以及第五行以后的
sed -n ‘/^#/p’ weoopp显示以#开头的行
d/ 删除sed 5d weoopp删除文件第五行
sed ‘/^#/d’ weoopp删除以#开头的行
sed ‘/UUID/!d’ weoopp除了UUID的行都删除
sed -e ‘5,$d’ weoopp删除第五行以及第五行以后的行
a/ 添加sed -e '$a hello ’ weoopp在最后加上hello显示
sed -e ‘$a hello\n hi’ weoopp显示时换行显示
sed -e ‘/^#/a hello’ weoopp在开头为#的行后显示
c/替换sed -e '/^#/c hello ’ weoopp替换以#开头的行
sed '5chello ’ weoopp替换第五行
i/插入'4ihello ’ weoopp插入第四行
r/整合文件sed ’ 5r text1 ’ weoopp将text1整合在weoopp的第五行后
w/写入sed ’ /^###/w file1’ text2将text2文件以###开头的行导入文件file1 中
  • n;p 正常显示
  • d 删除
  • a 添加
  • c 替换
  • i 插入
  • 整合文件 r
  • w 写入
26.2.2.2 sed 字符替换
  • 基本命令
命令意义
sed ‘s/w/###/g’ weoopp将文件中的w全部替换成###
sed ‘s/w/###’ weoopp将文件中的w全部替换成###
sed ‘1,5s/w/###/g’ weoopp讲一到五行的w替换成###
sed ‘1s/w/###/g’ weoopp将第一行的w替换成###
sed ‘1s/ w/###/g;5s/ w/###/g’ weoopp将第一行和第二行的w替换成###
sed ‘/lp/,/shutdown/s/w/###/g’ weoopp替换lp和shutdown中间的w为###
sed ‘s///####/g’ weoopp将全文的/替换为### \为转义字符
sed ‘s@/@####@g’ weoopp@也可以表示分隔符
sed ‘s@/@####@g’ -i weoopp将sed处理后的内容保存到weoopp中,可用来修改原文件内容
  • 实践

    在述
    在述

26.3 awk

26.3.1 awk介绍

AWK是一种处理文本文件的语言,是一个强大的文本分析工具。

26.3.2 awk 的基本命令

26.32.1 基本命令
  • awk的基本命令
命令意义
awk -F 分隔符 +命令+文件名基本输出
awk BEGIN{ }END{ }以开始;结果输出为:
awk ‘{print NR}’ 文件名输出行数
awk‘{print NF}’ 文件名输出列数
FILENAME当前文件名称本身
awk ‘{print 字符}’显示字符变量值
awk ‘{print “字符”}’显示字符这个字符串
awk '/条件1条件2 / print { }’ 文件名
awk '/条件1/
awk ‘/条件1/&&/条件2 / print { }’ 文件名与满足
‘{print $1}’显示第一列
‘{print $0}’显示全部列
$6~第六列
$6!~除了第六列以外
  • 实践

    在
    在这描述
    在这里述
    在这里述
26.3.2.2 练习
  • 显示系统中能用su切换的并且用户家目录不在/home下的用户以及数量
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值