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

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" "}' test.txt      

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

参数说明:       

        -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

     只打印重复的行。

原文地址:https://www.cnblogs.com/lanchang/p/6607944.html