python grep awk_Shell常用工具find,grep,sed,awk,xargs命令

最近学习shell命令,对grep,sed,awk命令有点混乱,故小结一下,巩固一遍。

注意:find , grep , sed, awk可使用基本正则表达式字符,find,grep,awk也支持扩展的正则表达式元字符,grep使用扩展正则必须结合-E或直接使用egrep命令。

基本正则表达式元字符有:

*

重复前面字符0次或多次

.

匹配任意字符一个,包括空格

^

匹配行首,但若在[]内则表示取反

[]

匹配字符集

\{\}

精确匹配

$

匹配行尾

\{n\}

表示重复前面字符n次

\{n,\}

表示重复前面字符至少n次

\{n,m\}

表示重复前面字符n-m次

扩展正则表达式元字符有:

匹配0个或1个前面的普通字符

+

匹配至少一个前面的字符

()

字符集合

|

或,通常和()一起使用

上述部分元字符在通配时意义会不一样,通配时如下:

*

任意位任意字符

一个任意字符

^

取反

{,}

或的关系

一、find命令:

基本格式:find 【路径】【选项】【操作】

【选项】: -name , -type , -mtime, -size , -perm , -user , -group 等

【操作】:-print , -exec, -ok

(1)常用选项及意义:

-name :根据文件名查找文件。 如:查找当前目录下的所有以“.py”结尾的文件(说明:“.”表示当前目录,“*”正则基本通配符)

-type :根据文件类型进行查找,文件类型有d:目录     - :普通文件    b:块设备文件    l:符号链接文件      p:管道文件     c:字符设备文件

如:查找当前路径下所有的目录

-mtime :后接+n,表示文件更改时间距今在n天之前,-n表示文件更改距今在n天之内。

如:查找当前路径下今天修改过的文件

-perm:根据文件权限查找文件。如:查找当前路径下权限为764的文件,说明:7表示rwx,表示用户(user)具有可读可写可执行权限,6表示rw-表示该用户所属属组(group)具有可读可写无可执行权限,4表示r--表示其他用户(others)仅有可读权限

-user :根据文件属主查找文件;-group:根据用户属组查找文件  -size : 根据文件大小查找文件   暂不作演示。

(2)操作名称及其意义

- print: 将匹配到的文件输出到标准输出

-exec :  对匹配的文件执行该参数给出的命令,后面接的形式为:“命令” { }  \;固定格式。

-ok:和-exec功能相同,只是在每次执行时会给出提示,让用户确定是否执行。

实例如下:

a. -print:查找当前路径下今天修改过的文件,且文件权限为764的文件

b. -exec :  查找当前路径下普通文件的详细信息

c. -ok : 查找当前路径下普通文件的详细信息

二、grep命令:一种强大的文本搜索工具,与正则表达式结合使用

基本格式: grep 【选项】【模式】【文件....】

【选项】:常用的有-c,-i, -n ,-l , -w, -x, -r, -b ,-E,-F

-c

只输出匹配行的数量

-n

列出所有的匹配行,并打印行号

-b

打印匹配行距文件头部的偏移量,单位:字节

-x

匹配整行

-E

支持扩展正则表达式

-i

不区分大小写

-l

只列出符合匹配的文件名,而不列出具体匹配行

-w

匹配整词

-r

递归搜索

-F

不支持正则表达式,按字符字面意思匹配

【模式】:可以是字符串,变量,正则表达式,注意模式中包含空格时,需要用双引号引起来。

实例1:搜索当前路径下以.py,.txt,.sh结尾的文件中哪些包含hello字符串,要求不区分大小写搜索,显示文本行内容及行号。

分析:以.py,.txt,.sh结尾的文件—— “*.{py,txt,sh}”。不区分大小写,使用-i选项。 显示文本内容及行号,使用-n。如下两种方式:

实例2:统计文本中的空行数,住:'^$'匹配空行

实例3:

a. 查找所有包含字符串“the”的行,如下,包含they字符的行也打印出来。

b. 精确匹配“the”这个单词的行

方法一:使用精确匹配\< \>

方法二:使用-w选项。

c. 查找整行文本都是“the”的行:使用-x选项

三、sed命令:流编辑器

基本格式一:sed 【选项】 'sed命令'  输入文件

基本格式二:sed 【选项】-f  sed脚本文件  输入文件

基本格式三: ./sed脚本文件  输入文件

多个编辑命令时:

sed 【选项】 -e  'sed 命令1'    -e  'sed 命令2'   -e  'sed 命令n'

【选项】:

-n : 不打印所有行到标准输出

-e : 表示将下一个字符串解析为sed编辑命令

-f  : 表示调用sed 脚本

【定位文本方法】:

x:指定行号               x,y:从x到y行              /pattern/ :匹配pattern模式的行

/pattern/parttern2/ :匹配包含pattern和parttern2的行

x,y!:查询不包括x到y的行

x,/pattern/:从模式x到pattern行进行匹配                /pattern/,x :从模式pattern到x行进行匹配

【sed编辑命令】:

常用:

p

打印匹配行

a\

匹配行后追加

i\

匹配行前插入

=

打印文件行号

r

从另一个文件读入

w

写入到另一个文件

c\

新文本替换匹配行,整体替换

n

读取下一个输入行,用下一个命令处理新的行

s

替换模式替换字符串

y

变换字符

d

删除定位行

q

第一个模式匹配成功后退出

{}

在定位行执行命令组

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值