文本内容查找grep、文件查找find、正则匹配

一、文本内容查找工具 grep

grep   egrep (文本过滤)   fgrep (不支持正则) 

对文本的内容按照指定的匹配模式基于行来进行筛选

格式     grep [选项] 模式 文件 

选项:

  -v:反向匹配,显示不能被模式匹配到的行

  -o:仅匹配被模式匹配到的字符串,而非整行

  -q:静默模式

  -i:不区分大小写,ignore-case

  -E:支持扩展(相当于egrep)  grep -E = egrep

根据正则表达式进行匹配查找

1、点 .   :  任意单个字符

2、[ ]  : 指定[ ]范围内的任意单个字符 

  [0-9],[[:digit:]] 匹配任意单个数字

  [a-z],[[:lower:]] 匹配任意单个小写字母

  [A-Z],[[:upper:]] 匹配任意单个大写字母

  所有的字母:[[:alpha:]]

  字母+数字:[[:alnum:]]

  空格:[[:space:]](空格不等同于空行)

  标点符号字符:[[:punct:]]

  [^]: 指定范围外的任意单个字符

3、次数匹配:用来指定匹配其前面的字符的次数

  *  : 星号前面的一个字符出现0次或n次

  .*  : 匹配任意长度的任意字符

  \?  : 问号前面的一个字符出现0次或者1次  \转义

  \+  : 前面字符至少1次  (1次到n次)

  \{m\}  : 匹配m次

  \{m,n\}  : 至少m次,至多n次

  \{m,\}  :  至少m次

  \{,n\}  :  至少0次,至多n次

4、位置锚定:用于指定字符出现的位置

  ^   : 锚定行首 ^char

  $   : 锚定行尾 char$

  ^$  : 空白行

5、单词的位置锚定

  \<char :锚定单词词首

  char\>  : 锚定单词词尾

6、egrep:支持扩展正则表示({} , (), ?, +可以不用转义) 等价于:grep -E

二、管道操作

管道:

     Linux:

     程序=指令+数据

     使用目的单一的小程序

     组合小程序完成复杂的任务

  指令1 | 指令2 | 指令3 

  | 左边命令的输出作为 | 后边命令的输入

 Linux 中不是所有命令都支持管道,不支持管道的命令:cd  rm  find  ...

三、文本内容处理命令 wc, tr, cut, sort

1、wc:即 word count

     ctrl+d 提交

     行 单词数 字节数

     wc[option][file]...

     -l:统计行数

     -c:统计字节数

     -w:统计单词数

2、tr:转换或删除字符,tr ‘集合1’ ‘集合2’,必须使用管道

  转换字符:会把第一个字符集的对应转换为第二个字符集中的对应转换

  -d:删除出现过的字符集

3、cut:根据指定的分隔符切片,并显示出需要显示的片

    -d字符:指定分隔符

    -f (field)   数字:指定要显示的字段

     单个数字:一个字段

     多个离散字段:逗号分隔

     多个连续字段:-分隔

4、sort:按字符进行比较

    格式 sort[options] FILE

    -f:忽略大小写

    -n:对数字进行排序

    -t:指定分隔符

    -k数字:指定分隔后进行排序字段列号

 -u:重复的行,只显示一行

 -r:倒序排列

 例题:查询用户,按照编号从大到小的顺序排列,取编号最大的前5名,列出用户名和编号

四、文件查找---------find命令

①:根据文件名  -name  -iname(忽略大小写)

②:根据属主属组查找  

  -user username  根据属主查找  

  -group grpname  根据属组查找

  可接组合条件 -a而且 -o或者:find /home -user root -a -group root  属主和属组都是root的

③:根据文件类型查找   -type

④根据文件的大小来查找   -size

⑤根据时间戳来查找  -atime  -mtime   -ctime (单位天,如果按照-mmin)

五、查到后的处理动作

①:打印(默认)

  -print  默认

  -fls  自定义

  把输出结果打印到output.txt中

②:查询属性信息(类似ls -l)  -ls

③:删除  -delete

④:后接命令(交互) -ok

⑤:后接命令(不交互) -exec cmd {} \;

六、让find命令支持管道(xargs命令)

  find命令不支持管道,但是可以使用xargs命令强行驱动可以使用管道

猜你喜欢

转载自www.cnblogs.com/thoughtful-actors/p/9649413.html
今日推荐