RedHat Linux 8 中shell的文本处理工具

grep

文本过滤工具
命令格式:grep 匹配条件 处理文件

命令操作:
grep root /etc/passwd ,过滤包含root关键字的内容
在这里插入图片描述

grep ^root /etc/passwd ,以root开头的内容
在这里插入图片描述

grep bash$ /etc/passwd ,以bash结尾
在这里插入图片描述

grep -i root /etc/passwd ,后略大小写,文件里暂时没有大写的root
在这里插入图片描述

grep -iE “<root” /mnt/passwd ,root字符之前不能有字符,“:”这种符号是不算的
在这里插入图片描述

grep -iE “root>” /mnt/passwd ,root字符之后不能有字符
在这里插入图片描述

grep -数字 root /etc/passwd,显示过滤行以及上面几行和下面几行
在这里插入图片描述

grep -n root /etc/passwd,显示匹配的行所在行号
在这里插入图片描述

grep -A数字 root /etc/passwd,显示过滤行以及下面几行
在这里插入图片描述

grep -B数字 root /etc/passwd,显示过滤行以及上面几行
在这里插入图片描述

grep -v root /etc/passwd,反向过滤,除包含root以外的内容
在这里插入图片描述
多个条件匹配:grep -E “^root|ROOT” /mnt/passwd ,root开头或者包含ROOT的内容
在这里插入图片描述
grep字符数量匹配规则

grep ^root 处理文件以root开有
grep root$ 处理文件以root结尾
grep r.t 处理文件r开头t结尾中间2个任意字符
grep …t 处理文件t结尾前面3个任意字符
grep -E root* 处理文件字符出现0到任意次
grep -E ro?ot 处理文件?前的字符是被处理的,o出现的次数0到1次
grep -E ro+ot 处理文件+前的字符是被处理的,o出现的次数1到任意次
grep -E “ro{n}t” 处理文件n次,n=自定义数字
grep -E “ro{m,n}t” 处理文件m到n次,m、n数字自定义,n>m
grep -E “ro {0,n}t” 处理文件出现0-n次
grep -E “ro{,n}t” 处理文件出现0-n次
grep -E “ro{m,}t” 处理文件最少出现m次
grep -E “(root){2}” 处理文件root字符串出现2次
  • grep r…t 处理文件 r开头t结尾中间2个任意字符
    在这里插入图片描述
  • grep …t 处理文件 t结尾前面3个任意字符
    在这里插入图片描述
  • grep -E ro?ot 处理文件 ?前的字符是被处理的,o出现的次数0到1次
    在这里插入图片描述
  • grep -E ro+ot 处理文件 +前的字符是被处理的,o出现的次数1到任意次
    在这里插入图片描述
  • grep -E ro{n}t 处理文件 n次,n=自定义数字
    在这里插入图片描述
  • grep -E “ro{m,n}t” 处理文件 m到n次,m、n数字自定义,n>m
    在这里插入图片描述
  • grep -E “(root){2}” 处理文件 root字符串出现2次
    在这里插入图片描述

sed

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

对字符的处理参数说明

参数p

p显示
sed -n 5p passwd显示第5行
sed -n 3,5p passwd显示3到5行
sed -ne “3p;5p” passwd显示3和5行
sed -ne ‘5,$p’ passwd5到最后的行
sed -n ‘/^s/p’ passwd显示以s开头的行
  • sed -n 5p passwd |显示第五行
    在这里插入图片描述

  • sed -n 3,5p passwd |显示3到5行
    在这里插入图片描述

  • sed -ne “3p;5p” passwd |显示3和5行
    在这里插入图片描述

  • sed -ne ‘5,$p’ passwd |5到最后以行
    在这里插入图片描述

  • sed -n ‘/^s/p’ passwd |显示以s开头的行
    在这里插入图片描述

参数d,删除

  • sed 1d passwd ,删除第1行
    在这里插入图片描述

  • sed ‘/^s/d’ passwd ,把s开头的行删除
    在这里插入图片描述

  • sed ‘/^user/!d’ passwd ,除了user以外的行都删除
    在这里插入图片描述

  • sed -e ‘5,$d’ passwd ,删除5到最后一行
    在这里插入图片描述

参数a,添加

  • sed -e ‘$a hello world’ passwd,添加hello在最后
    在这里插入图片描述
  • sed -e ‘$a hello\nworld’ passwd ,添加的hello world 是换行的
    在这里插入图片描述
  • sed -e ‘/^s/a hello world’ passwd ,在s开头的行下面添加hello world
    在这里插入图片描述

参数c,替换

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

参数w: 写入

  • sed ‘/^user/w testfile’ passwd ,把passwd中user开头的行写入testfile中
    在这里插入图片描述

参数i :插入

  • sed ‘5i hello world’ passwd,把hello world 插入到第五行
    在这里插入图片描述

参数r :整合文件

  • sed ‘5r testfile’ passwd ,将testfile里的内容整合到passwd文件的第五行下面
    在这里插入图片描述
sed 字符替换
  • sed ‘s/: /###/g’ passwd,将所有 :替换为###
    在这里插入图片描述

  • sed ‘s/: /###/’ passwd,只将第一列的:替换为 ###
    在这里插入图片描述

  • sed ‘1,5s/: /###/g’ passwd ,将1-5行的:替换为 ###
    在这里插入图片描述

  • sed ‘1s/: /###/g’ passwd ,只将第1行:替换为 ###

  • sed ‘1s/: /###/g;5s/: /###/g’ passwd ,将1和5行的:替换为 ###
    在这里插入图片描述

  • sed ‘/lp/,/shutdown/s/: /###/g’ passwd ,将lp 到 shutdown 之间的行的: 替换为 ###
    在这里插入图片描述

  • sed ‘s///###/g’ passwd ,将所有 / 替换为 ### ,因为 / 在命令中表示特殊含义所以用 \ 转译
    在这里插入图片描述
    这里也可以使用 @ 来代替 / 的作用在命令中:sed ‘s@/@###@g’ passwd
    在这里插入图片描述

以上sed的所有操作都是临时展示,不会保存在操作文件里,如果要保存结果需要加参数 -i 将操作保存,
sed ‘s@/@###@g’ -i passwd ,把sed处理的内容保存到passwd文件中

在这里插入图片描述


awk 报告生成器

命令格式: awk -F 分隔符 BEGIN{}{}END{} FILENAME

命令操作:

  • NR #行数,最直接i就是列出所有的行号
    在这里插入图片描述
  • NF #列数,指定分割符就可以标出每行有多少列
    在这里插入图片描述
  • FILENAME ,表示文件名称本身,在awk命令中写入表示输出的都是被处理文件的文件名:awk ‘/bash$/{print FILENAME}’ passwd ,查找bash结尾的行以文件名显示
    在这里插入图片描述
  • 变量,在awk命令中,{}里的值如果用 " " 括起来表示字符串,没有 " " 括起来表示变量,变量的值需要去特殊指定:awk ‘/bash$/{print “111”}’ passwd ,查找bash结尾的行以111代替显示
    在这里插入图片描述

awk报告生成的方式:

条件表示说明
awk /bash$/#条件
/条件1|条件2/条件1或者条件2 ,在一个条件里的两个子条件
/条件1/||/条件2/条件1或者条件2
/条件1/&&/条件2/条件1并且条件2
行中的列表示说明
$0所有的列
$1第一列
$2第二列
$3第三列

awk -F : ‘/sh$/||/bash$/{print $1}’ passwd,查找sh或bash结尾的行,并打印第一列
awk -F : ‘/sh$|bash$/{print $1}’ passwd ,查找sh或bash结尾的行,并打印第一列
在这里插入图片描述

awk -F : ‘/^user/&&/bash$/{print $0}’ passwd,查找user开头并且bash结尾的行,打印出全部
在这里插入图片描述

其他用法
awk -F : ‘$6~/home/{print}’ passwd ,打印出第六列是home的行
在这里插入图片描述
awk -F : ‘$6~/home/&&!/^user/{print}’ passwd,打印出第六列是home并且不是以user开头的行
在这里插入图片描述
awk -F : ‘$6!~/home/{print}’ passwd,打印出第六列不是home的行
在这里插入图片描述
awk ‘BEGIN{n=0} {n++} END{print n}’ passwd ,打印出文件行数
在这里插入图片描述


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Howei__

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

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

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

打赏作者

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

抵扣说明:

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

余额充值