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

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

2014-08-15 15:30 465 查看
此处命名为正则表达式可能不太恰当,大都是一些可能是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:以上命令可通过管道连接使用,以完成一些文本的处理

本文出自 “那些年匆匆” 博客,请务必保留此出处http://gtlinux.blog.51cto.com/1047916/1540667
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: