您的位置:首页 > 运维架构 > Shell

shell中的grep,awk,sed,cut,sort

2015-12-09 14:08 344 查看
此处命名为正则表达式可能不太恰当,大都是一些可能是shell脚本中用到的命令,暂时这样称呼,当然这些命令确实和正则表达式关系密切。

 

1.grep

 

grep -n '^a’ filename   #-n 打印所过滤出行的行号  过滤以某字符为开头的行

grep -n '^[a-z]' filename  过滤以小写字母为开的行

 

grep  '^$' filename  打印为空行的行号

grep  -n '\.$' 打印以小数点为结尾的行

 

ps:    $代表结尾

       ^代表开头

 

grep -v '^$'  filename  打印不为空的行

-v  反义,意为不包含某参数的行

grep -v 'set' filename 打印文件中不包含set的行

 

 

grep 常用参数:

 

-c 只输出匹配行的计数

-i 不区分大小写(只适用于单字符)

-n 显示匹配行及行号

-s 不显示不存在或无匹配文本的错误信息

-v 显示不包含匹配文本的所有行

 

 

2.sed [d删除 c替换 s 搜索替换]

sed 'n1,n2 d'

sed  -i s/a/b/g  filename   替换后并写入源文件

 

3.awk是个非常牛逼的程序

awk 命令1,命令2,命令3

awk '{print NR,NF,$1,$NF,}' file 显示文件file的当前记录号、域数和每一行的第一个和最后一个域。

 

FS 分隔符

NR 当前为第几行

FN 当前有几个字段

 

awk 默认的分隔符是一个空格

 

4.last 这个月的登陆信息

 

5.cut

-d -f  结合作用,-d后接分隔符,-f后接数字。意为打印出以-d(后接内容)为分隔符分隔成的第几部分

如: cut -d '_' -f 3    string_line  即为打印出以_为分隔符的第3部分,若没有第三部分则打印出为空

-c 以字符为单位取出固定范围的字符

cut -c  20-25    即取出这一行第20到第25个字符

 

6.uniq

过滤重复内容

uniq -c 在列边显示该行出现的次数

 

7.sort (排序)

-f 忽略大小写

-b 忽略空格

-r 反向排序

-u 滤重

-t 分隔符,默认为tab

-k 按哪个字段来排序

 

8.split  -bl prefix(文件名头)

-b 按大小拆分 后接文件太小 ( 400b/400K/400m等)

-l 按行拆分

 

 9.print

PS:以上命令可通过管道连接使用,以完成一些文本的处理
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: