shell中文本处理正则表达式

1.grep

全面搜索研究正则表达式并显示出来grep 命令是一
种强大的文本搜索工具 , 根据用户指定的“模式”对目
标文本进行匹配检查 , 打印匹配到的行由正则表达式
或者字符及基本文本字符所编写的过滤条件

grep 的格式

grep 匹配条件 处理文件
例如
grep root passwd
grep ^root passwd
grep root$ passwd
grep -i root passwd ##忽略大小写
grep -E “root|ROOT” passwd ##扩展,同时筛选root或ROOT
或是
egrep “root|ROOT” passwd ##扩展,同时筛选root或ROOT
grep -r root /etc ##递归查询/etc下的关于root的文件
grep -n root passwd ##显示匹配的行号
grep -B 数字 root passwd ##筛选并显示前n行
grep -A 数字 root passwd ##筛选并显示后n行
egrep “root|ROOT” passwd -v ##反选root或者ROOT

grep 中的正则表达式

^westos ##以westos开头的
westos$ ##以westos结尾的
‘w….s’ ##w“中间四个任意”s
‘w…..’ ##w“后面五个任意”
‘…..s’ ##“前面五个任意”s

grep 中字符的匹配次数设定 要加-E

  • 字符出现 [0- 任意次 ]
    \? 字符出现 [0-1 次 ]
    这里写图片描述
    + 字符出现 [1- 任意次 ]
    这里写图片描述
    {n} 字符出现 [n 次 ]
    这里写图片描述
    |{m,n} 字符出现 [ 最少出现 m 次,最多出现 n 次 ]
    这里写图片描述
    {0,n} 字符出现 [0-n 次 ]
    这里写图片描述
    {m,} 字符出现 [ 至少 m 次 ]
    这里写图片描述
    (xy){n}xy 关键字出现 [n 次 ]
    这里写图片描述
    .* 关键字之间匹配任意字符
    这里写图片描述

grep 中字符的匹配位置设定 要加-E

^ 关键字 ##以什么开头,最前头
这里写图片描述
关键字 $ ##以什么结尾,最终结尾
这里写图片描述
\< 关键字 ##以什么开头,前面仍可加
这里写图片描述
关键字 > ##以什么结尾,空格后仍可加
这里写图片描述
\< 关键字 > ##关键字,可添加东西
这里写图片描述
^关键字$ ##关键字,不能添加
这里写图片描述

grep 正则表达式与扩展正则表达式

正规的 grep 不支持扩展的正则表达式子 , 竖线是用于表示”
或”的扩展正则表达式元字符 , 正规的 grep 无法识别
加上反斜杠 , 这个字符就被翻译成扩展正则表达式 , 就像 egrep

grep -E 一样

2.sed行编辑器

stream editor
用来操作纯 ASCII 码的文本
处理时 , 把当 前处理的行存储在临时缓冲区中 , 称为“模式空
间” (pattern space) 可以指定仅仅处理哪些行
sed 符合模式条件的处理 不符合条件的不予处理
处理完成之后把缓冲区的内容送往屏幕
接着处理下一行 , 这样不断重复 , 直到文件末尾

Sed 命令格式

调用 sed 命令有两种形式:
sed [options] ‘command’ file(s)
sed [options] -f scriptfile file(s)

sed 对字符的处理

p 显示
d 删除
a 添加
c 替换
w 写入
i 插入

p 模式操作

sed -n ‘/:/p’ fstab ##抽出有:的行
这里写图片描述
sed -n ‘/UUID$/p’ fstab
sed -n ‘/^UUID/p’ fstab
这里写图片描述
sed -n ‘2,6p’ fstab ##抽出2到6行显示
这里写图片描述
sed -n ‘2,6!p’ fstab ##抽出除了2到6行的显示
这里写图片描述

d 模式操作

sed ‘/^UUID/d’ /etc/fstab ##删除UUID开头的
sed ‘/^#/d’ /etc/fstab ##删除#开头的
sed ‘/^$/d’/etc/fstab ##删除空行
sed ‘1,4d’/etc/fstab ##删除1到4行
sed –n ‘/^UUID/!d’ /etc/fstab

a 模式操作

sed ‘/^UUID/a \hello sed /etc/fstab
sed ‘/^UUID/a \hello sed\nwestos /etc/fstab’

i 模式操作

sed ‘/^UUID/i\hello sed\nwestos /etc/fstab’

c 模式操作

sed ‘/^UUID/c\hello sed\nwestos /etc/fstab’

w 模式操作

sed ‘/^UUID/w /tmp/fstab.txt’ /etc/fstab
sed -n’/^UUID/w /tmp/fstab.txt’ /etc/fstab
sed ‘/^UUID/=’/etc/fstab
sed ‘6r /etc/issue’ /etc/fstab

sed 的其他用法

sed -n ‘/^UUID/=’ fstab
sed -n -e ‘/^UUID/p’ -e ‘/^UUID/=’ fstab
sed -e ‘s/brown/green/; s/dog/cat/’ data
sed -f rulesfile file
sed ‘s/^\//#/’/etc/fstab
sed ‘s@^/@#@g’/etc/fstab
sed ‘s/\//#/’/etc/fstab
sed ‘s/\//#/g/’/etc/fstab
sed ‘G’ data
sed ‘ !Gdatased=data|sedN;s/\n//sedn ! G ′ d a t a s e d ‘ = ′ d a t a | s e d ‘ N ; s / \n / / ′ s e d − n ‘ p’ data

awk 报告生成器

awk 处理机制 :awk 会逐行处理文本 , 支持在处理第一行之前做一些
准备工作 , 以及在处理完最后一行做一些总结性质的工作 , 在命令格式
上分别体现如下 :
BEGIN{}: 读入第一行文本之前执行 , 一般用来初始化操作{}: 逐行处理 ,
逐行读入文本执行相应的处理 , 是最常见的编辑指令快
END{}: 处理完最后一行文本之后执行 , 一般用来输出处理结果

awk 基本用法

linux 上面默认使用 gawk
awk ‘{print FILENAME}’ passwd
awk ‘{print 第 “NR” 行 , 有 “NF” 列 }’
awk ‘BEGIN{print NAME}’
awk ‘END{print WESTOS}’
awk -F : ‘BEGIN{print NAME}{print 1}END{WESTOS}’  
awk ‘/bash
1}END{WESTOS}’  awk ‘/bash
/’
awk -F : ‘/bash /print$1awkBEGINa=34;printa+12awkF:/ro/print/etc/passwdawkF:/[ad]/print$1,$6passwd.txtawkF:/a|nologin / p r i n t $ 1 ′ a w k ‘ B E G I N a = 34 ; p r i n t a + 12 ′ a w k − F : ‘ / r o / p r i n t ′ / e t c / p a s s w d a w k − F : ‘ / [ a − d ] / p r i n t $ 1 , $ 6 ′ p a s s w d . t x t a w k − F : ‘ / a | n o l o g i n /{print 1, 1 , 7}’ passwd.txt
awk -F : ‘ 6 /bin 6   / b i n /{print 1, 1 , 6}’
awk -F : ‘ 7! /nologin 7 !   / n o l o g i n /{print 1, 1 , 7}’ passwd.txt

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值