shell中的文本处理工具

一、grep

介绍:

grep==Globally search  a  Regular  Expression  and  Print

即全局搜索正则表达式,其搜索模式为贪婪模式,类似于模糊搜索概念

grep  支持基础的正则表达式

egrep  支持基础以及扩展的正则表达式(==grep  -E)

使用格式:

grep/egrep/grep -E        ‘匹配条件’        ‘处理对象’

grep  root  passwd                ##过滤显示含root关键字的内容

grep  -i  root  passwd                ##忽略大小写

grep  -E  "\<root"  passwd                ##root字符前无字符

grep  -E  "root\>"  passwd                ##root字符后无字符

grep  -'数字'  ‘关键字’  passwd                ##显示过滤行及其上下对应的‘数字’行

grep  -n  ‘关键字’  passwd                ##显示匹配的行所在行号

grep  -A数字  passwd                ##显示过滤行及其下面的行

grep  -B数字  passwd                ##显示过滤行及其上面的行

grep  -v  passwd                ##反向过滤

grep字符数量匹配规则:

^wang                ##以wang开头

wang$                ##以wang结尾

w....g                ##含有wg字符且中间字符任意值但数量必须和.的数量一致

.....g                ##含有g字符且g前面字符任意值但字符数小于.数的不会被过滤出来

*                ##字符出现任意

?                ##0到1次

+                ##1到任意次

{n}                ##n次

{m,n}                ##m-n次

{0,n}                ##0-n次

{,n}                ##0-n次

{m,}                ##最少m次

(linux){3}                ##linux字符串出现3次

二、sed

使用格式:

sed        ‘参数’        ‘命令’        ‘处理对象’

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

常用参数:

-n                ##不输出模式空间内容,只输出被处理的内容 

-e                ##指定多个元素

sed处理命令:

p                        ##显示

sed  -n  5p  file                ##显示第5行

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

sed  -ne  1,5p  file                ##显示1到5行

sed  -ne  '5,$p'  file                ##显示从5行到最后行

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

d                        ##删除

sed  5d  file                ##删除第5行

sed  '/^#/d'  file                ##删除以#开头的行

sed  '/^UUID/!d'  file                ##以UUID开头的行不删除,其余都删除

sed  -e  '5,$d'  file                ##删除从第5行到最后行

a                        ##添加(在指定行的下方添加)

sed  -e  '$ahello'  file                ##在文件最后行添加hello字符

sed  -e  '$ahello\nworld'  file                ##在文件最后行添加hello字符,然后换行再添加world字符

sed  -e  '/^#/ahello'  file                ##在以#开头的行下方添加hello字符

c                        ##替换

sed  -e  '/^#/chello world'  file                ##将以#开头的行替换为hello world字符 

sed  '5chello world'  file                ##替换文件的第5行为hello world字符

w                        ##写入符合的输出至文件

sed  '/^UUID/wwang'  file                ##将以UUID开头的行写入文件wang中

i                        ##插入(在指定行的上方插入)

sed  '5ihello'  file                ##

r                        ##整合文件

sed  '5rwang'  file                ##将文件wang整合至passwd的指定行的下行

sed字符替换:

sed  's/:/###/'  file                ##将文件所有行的首列:替换为### 

sed  's/:###/g'  file                ##将文件所有行的全部列的:替换为###

sed  '1,5s/:/###/g'  file                ##将文件1到5行的所有列的:替换为###

sed  '1s/:/###/g'  file                ##将文件1行的所有列的:替换为###

sed  '1s/:/###/g;5s/:/###/g'  file                ##将文件的1行和5行的所有列的:替换为### 

sed  '/lp/,/halt/s/:/###/g'  file                ##将lp和halt字符中间的行的所有列的:替换为###

sed  's/\//###/g'  file                ##将文件中所有的/替换为###

sed  's@/@####@g'  file                ##同上

sed  's@/@####@g'  -i  file                ##把经sed处理后的内容保存到原file中

三、awk

使用格式:

awk  -F  ‘分隔符号’  ‘BEGIN{print  XX}{print  XX}END{print  XX}’  '处理对象'

BEGIN                ##处理前动作

END                ##处理结束后的动作

awk命令内置参数:

~                        ##等于

!~                        ##不等于

NR                        ##行数

NF                        ##列数

FILENAME                        ##文件名称本身

wang                        ##wang变量的值

“wang”                        ##wang这一字符串

$0                        ##所有列

$1                        ##第1列

$2                        ##第2列

依次类推......

awk  -F  :  'BEGIN{n=0}{n++}END{print  n}'  passwd

设定n=0;n++        ##每处理一行n+1;处理完所有行后打印n的值

/bash$/                        ##条件

/条件1 | 条件2/                        ##一个条件中的两个或关系的元素

/条件1/||/条件2/                        ##条件1或条件2(或关系)

/条件1/&&/条件2/                        ##条件1和条件2(且关系)

不能使用格式/条件1&条件2/进行操作 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值