find命令、grep命令、sed 命令 、awk命令、uniq命令

find命令原理:从指定的起始目录开始,递归地搜索其各个子目录来查找满足条件的文件。

格式:find [查找目录] [参数] [匹配模型]  

多参数格式:find [查找目录] [参数] [匹配模型] [参数] [匹配模型]  

命令选项:
-name      按名字查找               
     -i     忽略字母大小写
 
-type     按文件类型查找         
     b:块设备文档
     d:目录
     c:字符设备文档
     P:管道文档
     l:符号链接文档
     f:普通文档
 
-uid     按uid查找
 
-gid     按gid查找
 
-user     按username查找
 
-group     按groupname查找
 
-perm     通过权限查找
         
-size     通过文件大小查找         
     +n     查找出大于n的文件
     -n     查找出小于n的文件

例如:

1、find . -name "*.sh"           

    查找在当前目录(及子目录)下找以sh结尾的文件

 

2、find . -perm 755               

    查找在当前目录(及子目录)下找属性为755的文件

 

3、find -user root                  

    查找在当前目录(及子目录)下找属主为root的文件

 

4、find /var -mtime -5           

     查找在/var下找更改时间5天以内的文件

 

5、find /var -mtime +3          

     找在/var下找更改时间3天以前的文件

  

6、find /etc -type l                

     查找在/etc下查找文件类型为|的链接文件

 

7、find . -size +1000000c    

      查找在当前目录(及子目录)下查找文件大小大于1M的文件1M是1000000个字节

 

8、find . -perm 700 |xargs chmod 777         

      查找出当前目录(及子目录)下所有权限为700的文件,并把其权限重设为777

 

9、find . -type f |xargs ls -l                         

      查找出文件并查看其详细信息。

grep命令查找 所在行内容

格式:grep [参数] [搜索模型] [文件名]   

1、grep "hello" *

    在的有文件中查找 hello 文件。

选项参数:
-a :将 binary 文件以 text 文件的方式搜寻数据
-c :计算找到 '搜寻字符串' 所在 行的次数 ,而不是字符串出现的次数。
-i :忽略大小写的不同
-n :顺便输出行号
-v :反向选择,显示出没有 '搜寻字符串' 的那行内容!
--color=auto :可以将找到的关键词部分加上颜色的显示喔
处理参数:

-A 除了显示匹配的一行之外,并且显示该行之后的num行
-B 除了显示匹配的一行之外,并且显示该行之前的num行
-C 除了显示匹配的一行之外,并且显示该行前后的num行

2、grep -c "file" a

     在a文件中匹配到 file 所在行的次数。

3、grep -n "file" a

     在a文件中有多少行匹配到file,同时显示行和行号。

4、grep -i "file" a

     在a文件中查找file,并不区分大小写。

5、grep -v "file" a

     在a文件中过滤掉file所在的行。

grep -E 选项可以用来扩展选项为正则表达式。

6、grep -E "2016:22:5[0-9]" a

     在a文件中查找时间在2016:22:50->2016:22:59的所在行。 

7、grep -E "4{2}" a

     查找包含两个4的行。

8、grep -E "4{2,}" a

      查找大于两个4的行。 

sed 命令 (替换或打印)

选项参数:

   -n        取消sed的默认输出,不修改文件内容。

   -i         改变文件内容。

结果处理参数:

       p       print打印。

       d      delete删除。

       a     新增,指定行后方加入新行

      c    替换行,将指定行的内容全部替换

      s      替换指定字符串,格式 :sed -i 's/查找字符串(可以用正则表达式)/替换字符串/g' test.txt ;g代表global ,也可以指定行数;“/”是分隔符,可以用 # @ 等替换。

sed命令中,"$" 表示文件的最后一行

1、sed -n '1,4'p file

    只打印从第一行到第四行得记录。

2、sed -n '/los/‘p file

     打印匹配los的行 

3、sed -n '4,/los/'p file

     打印从第四行到匹配第一个los的之间的所有行。 

4、sed -n '1,2'd file

     把第一行和第二行全部删除(不改变原文件内容)。

awk命令数据处理并分析(取列)

awk命令原理:简单来说awk就是把文件逐行的读入,按输入分隔符进行切片,切成多个组成部分,把每片保存在内建的变量中,$1,$2,$3......($1第一列,$2第二列...$NF最后一列);其中,$0表示整行。

模型:

awk [参数] 'awk语句' 文件  

例如一:

awk -F "分隔符" ‘{print $1}’ 文件     

awk '{if(NR<31 && NR>19) printf $1"\n"}' test.txt      

:NR代表行号,&&(and)并且,\n回车换行

参数说明:       

        -F           指定分隔符

例如二:

cat file|awk '$0 !~/192.168.10.2/'|grep "php"|wc -l

     ~匹配192.168.10.2的ip地址的統計,!~為不匹配

awk '{print $1}' /var/log/httpd/access_log|sort|uniq -c

     把apache网站的所有访问ip全部统计出来,并打印出统计次数。

uniq命令(重复)

1、uniq -c file

    打印紧挨的重复行出现的次数。

2、uniq -d file

     只打印重复的行。

posted @ 2017-03-22 22:17  兰昌  阅读(53697)  评论(0)    收藏  举报