Shell学习笔记-文本过滤

1.基本正则表达式

^ $ * . \这些都是基本元字符
[ ] [^ ] 表示字符集

pattern\{n\} pattern\{n,\}pattern\{n,m\} 意思就是匹配前边pattern的次数...


2.find命令

find path -option [-print  -exec  -ok]

path如果为空,表示当前目录查找....

option表示查找的条件,比如 -name按名字查找,-perm按权限查找,-user用户名查找,-type按类型查找...等等

-name选项时,可以是用正则表达式表示要查找的文件名....

-size选项时,例如 -size +10000000c 表示大于10M的文件,+号表示大于...-号表示小于...c表示字符....

-print 表示把查找结果打印到屏幕

-exec 表示直接执行查找到的文件

-ok 表示执行文件前要询问一下是否执行,去掉这个步骤的话,意思和-exec是一样的....

find ...... | xargs command
find命令的结果可以通过  xargs 变为  command命令的输入,从而执行 command....
find ...... | xargs chmod 755 
意思很明显......


3.grep

find 是在某个路径内查找文件....

grep 则是在某个或者某些文件内查找字符串....

grep -option "字符串" file(s)

-option

-c 表示显示查找到的条目的总数
-i 表示不区别字符串中的大小写
-v 表示显示不包含该字符串的行,就是去反结果
其他的不说了,这几个应该是主要的

“字符串” 这部分可以是用正则表达式表示

file(s)
可以是一个文件的文件名,或者是有正则表达式表示的一组文件....


4.awk

学点基本的先...

awk [ -option ] ‘模式和动作’  文件

-option 可以设置一些选项,如 -F 可以设定分隔符....

模式和动作语句要用单引号括在一起...
有模式没动作,则打印符合模式的行,模式的通常形式是 /正则表达式/ 或者 关系运算  $1 > $2 神马的....
没模式有动作,则对于每一行数据都执行一遍动作,然后输出结果......一般的使用都是 print....
两者都有的话,意思就是对于文件中得每一行,如果符合设定的模式,则进行前边设定的动作,意思就是对每行字符串进行处理....


awk ‘BEGIN {...} {...} END{...}’ file

单引号哦!!!!!!!
BEGIN是先被执行一次的部分{}中的语句先执行一次,然后再对文件的每行执行 中间{}中得动作,最后结束时再执行 END后边{}中得动作....


初级使用时,主要使用print命令,例如 print $1....

$1...$n分别表示第几个域,一行可能包括几个域,域之间默认是空格为分隔符

-F 选项可以设定分隔符....例如 -F : 吧分隔符改为 冒号....

$0 表示整个一行数据.....


awk暂时的作用就是对于文件进行列提取,,,,可以很方便的提取出某列的内容,分隔符可以动态指定,很方便....

有篇文章可供参考:
http://man.lupaworld.com/content/manage/ringkee/awk.htm

5.sed

sed命令既能查找,也能替换,主要用它还是因为替换...查找可以选择 grep...

sed [option] ‘范围表示和动作' 文件

单引号哦~~~~~~~~

option

-n 很重要,常用,表示只打印符合范围并且执行了动作的结果,而不是全部的文件内容
-e 可以使用多个这种范围表示和动作的组合,例如  -e ’范围和动作‘ -e ’范围和动作‘...会把文件中的每一行分别去执行这些范围和动作...

范围表示方法:

x 一个数据,表示行号,只对该文件中的该行做动作

x,y 两个数字,表示行的范围 x到y行

/pattern/ 模式,表示符合该模式的行

x,/pattern/ 表示由x行开始,到第一个符合模式pattern的行结束,包括符合那第一个符合模式的行

/pattern/,x 和上边意思差不多

/pattern/pattern/ 符合两个模式的行....


动作有如下几种:

p 表示范围内的行,常用

d 表示删除范围内的行,常用
= 表示打印出行号
a\ 表示符合范围的行,在每行后边假如一行信息,例如   /pattern/a\adf  意思就是在符合pattern的行后边假如一行“asf”.....
i\ 和上边类似,只是加在行的前边....
c\ 表示替换用其后边的内容替换掉符合范围的行的数据....

s/pattern/pattern/g 表示由后一种模式替换前一种模式匹配的行的对应位置,后边加g表示全换...
s/pattern/&pattern/g 表示由后一种模式串放到前一种模式匹配的行的对应位置的后边,后边加g表示全换...
s/pattern/pattern&/g 表示由后一种模式串放到前一种模式匹配的行的对应位置的前边,后边加g表示全换...


用行号表示范围,然后p打印出来,其实就是提取行,而AWK是可以提取列的,很好的搭档啊

用模式表示范围,然后p打印出来,这个时候和grep很像,感觉就是一个 grep,但是可能没有grep那样众多的选项,貌似更专业一些....

        其实d动作,此时可以理解为grep的-v选项...


6.sort

sort [option] file

sort file  普通排序

sort -r file 文艺排序...逆序

sort -u file 会删除相同的行,然后排序


sort +n,-m 使用域n到m进行排序,域的分隔符可以使用 -t 选项指定
sort +n.k,-m.q 二逼排序...使用域n的第k个字符到m域的第q个字符进行排序,域的分隔符可以使用 -t 选项指定

sort +2n file 在file的第2列(域)按数字方式排序,如果没有n,则表示按字符顺序排队


7.uniq

uniq [option] file

uniq file 普通去重

uniq -u file 不显示重复行

uniq -d file 只显示重复行,每组重复行只显示一行

uniq -c file 统计重复行行数,这个很重要,可以做统计用





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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值