Shell中文本处理工具

目录

1.grep

2.sed

3.awk


1.grep

 grep[Globally search a Regular Expression and Print]是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来grep -E 指令和egrep指令效果相同

grep 格式

grep 匹配条件 处理文件

grep root passwd            过滤root关键字

grep -i root passwd        后略大小写

grep –e root –e bash passwd      搜索root和bash

grep –E “root|bash” passwd          搜索root和bash

 

grep –E  “\<root”passwd           root 字符之前不能有字符

grep –E  “\root>”passwd           root 字符之后不能有字符

grep -2 chroot ppasswd            显示含chroot行以及上面2行和下面2行

 grep -n chroot passwd         显示含chroot的行所在行号

grep –A2 chroot passwd       显示含有chroot行以及下面2行

grep –B2 chroot passwd       显示含有chroot行以及上面2行

grep –v root passwd              反向过滤,显示除了含有root的以外的所有行

grep字符数量匹配规则(westos为文件名)

grep  ^wabab westos        以wabab开头

grep  ttttos$  westos         以ttttos结尾

grep  wa..bs   westos       wa开头bs结尾中间2个任意字符

grep  .....abs  westos        abs结尾前面5个任意字符

grep  .*  westos                 字符出现任意

 

grep –E   wes?os  westos        0到1次

grep –E   ‘w.+s’   westos           1次到任意次

grep –E   ‘w.{n}s’   westos          n次

grep –E  ‘w.{m,n}s’  westos        m到n次

grep –E  ‘w.{0,n}s’  westos         0-n次

grep –E  ‘w.{,n}s’   westos          n次

grep –E  ‘w.{m,}s’   westos         最少m次

grep –E  ‘w(ab){2}s’ westos        ab字符串出现2次

 

2.sed

命令格式:

sed 参数 命令 处理对象

sed 参数 处理对象 -f 处理规则文件

对字符的处理

p    显示

sed -n  5p  passwd                显示第五行

sed -n  3,5p  passwd             显示3到5行

sed -ne "3p;5p passwd          显示3和5行

sed -ne 1,5p  passwd           1-5行

sed -ne '5,$p' passwd           5到最后一行

sed -n '/^#/p' passwd             显示以#开头的行

 

d     删除

sed 5d passwd                 删除第五行

sed '/^root/d' passwd        把root开头的行删除

sed '/^root/!d' passwd       除了含有root以外的行都删除

 

a    添加    i   插入

sed -e '$a hello' passwd                最后一行后添加hello

sed -e '$a hello\xxxx' passwd        给hello后添加xxxx

sed  '2ihello' passwd                     给第二行前边加hello

 

c      替换

sed '1chello world' passwd         把第一行替换成hello world

w       把符合的行写到指定文件中

sed ‘/root/w file’ passwd             把含有root的行写入file文件中

 

r    整合文件

sed  '3rtest2' test1

 

sed   字符替换

sed 's/:/###/g' passwd         将passwd中的所有:(冒号)替换成###(###号)

sed 's/:/###/' passwd          将passwd中第一列的所有:(冒号)替换成###(###号)

sed '1,3s/:/###/g'passwd    将passwd中的1~3行所有的:(冒号)替换成###(###号)

 

sed '1s/:/###/g' passwd   

将passwd中第1行所有的:(冒号)替换成###(###号)

sed '1s/:/###/g;5s/:/###/g' passwd

将passwd中第一行和第五行的所有:(冒号)换成###

sed '/adm/,/rootwestos/s/:/###/g' passwd

将adm和rootwestos字符之间的:(冒号)替换为###(#号)

 

sed 's/\//####/g' westos                将全文的\(反斜杠)替换成###(#号)

sed 's@/@####@g' passwd        将全文的/(斜杠)替换成###(#号)

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

 

3.awk

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

 提前需要做的 接下来需要做的   左后需要做的

awk ‘{print NR}’ passwd                             passwd文件的行数

awk –F :‘{print NF}’ passwd                    以:(冒号)为分隔符passwd文件的列数

awk –F :‘{print $1,$(NF-1)}’ passwd       以:(冒号为分隔符)passwd文件的倒数一列

awk ‘/root/{print $0}’ passwd                      passwd文件中含有root关键字的行

FILENAME   文件名称本身

westos #westos变量值

“westos” #westos字符串

 

/bash$/    条件

/条件1|条件2/            条件1或者条件2

/条件1/||/条件2/          条件1或者条件2

/条件1/&&/条件2/        条件1并且条件2

$0    所有的列

$1    第一列

$2    第二列

$n    第n列

/etc/passwd文件的第六列没有home关键字并且以bash结尾的行

awk -F : '$6!~/home/&&/bash$/{print}' /etc/passwd

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值