Centos7 文本处理三剑客(sed、awk、grep)

一、sed

  什么是sed?

    流式编辑器

  为何要用sed?

    sed与vim对比

      1、sed可以把处理文件的规则事先写好。然后用一套规则编辑多个文件,而vim只能一个个编辑

      2、sed处理文件一次只处理一行,即同一时间内存中只有文件一行内容,无论文件多大,都不会对内存造成过大压力,

  如何使用sed?

    sed 选项 "规则" 目标文件

      选项:

        -i        将默认输出结果(规则处理的结果+默认输出结果)输出到文件

        -n        取消默认输出

 

 

      规则:

        定位+命令

          定位:

            行号定位:

              sed '1p' nn.txt      打印第一行

              sed '3p;5p' nn.txt     打印第三行、第五行

              sed '2,4p' nn.txt      打印第二到第四行

 

 

            正则定位:

              sed '/12345/d' nn.txt        删除所有包含nn的行

              sed '/^root/d' nn.txt         删除以root开头的行

              sed '/12345$/d' nn.txt        删除以12345结尾的行

 

 

            没有定位就是定位所有

          命令:

            p          打印

            d          删除

            s///gi        替换(g全局  i不区分大小写)

              sed '1,3s/root/jojo/gi' nn.txt          将第一到第三行的root替换为jojo

              sed '/^ad/s/opkki/wwweee/gi' nn.txt      将所有以ad开头的行的opkki替换为wwweee

              sed 's/^a/A/' nn.txt              将所有行行首的a替换为A

              ip a | sed 's/eth0/jojo!!/'            sed命令支持管道

 

 

 

 

            i          在行前插入

            a          在行后插入

 

 

二、awk

  主要擅长处理有规律的文本,主要用于做一下格式化的处理

  ps:awk是一种编程语言

  

  awk 选项 '规则' 文件路径

 

  选项:

    -F        指定分隔符

  规则:

    定位+命令

      定位:

        行号定位:

          (NR、NF表示变量,NR表示行号,  NF表示每行的段数量)

          awk -F: 'NR == 3{print $1,$3}' a.txt      打印第三行的第一、第三段内容

          awk -F: 'NR >= 2 && NR <= 4{print $2}' a.txt    打印第二到第四行的第二段内容

          awk -F 'NR ==2 , NR == 4{print $0}' a.txt      打印第二到第四行的所有内容

          awk -F 'NR <=2 || NR >=4{print $2,$4}      打印前两行与四行后的第二、四项内容

 

 

        正则定位:

          ...

          awk -F: '$2 ~ /4/{print $0}' a.txt      打印第二段含有4的整行

          awk -F: '$2 !~ /4/{print $0}' a.txt      打印第二段不含有4的整行

          awk -F: '$1 == "we" {print $0}' a.txt     打印第一段是we的整行

          awk -F: '$1 == "we"{print $NF}' a.txt      打印第一段是we的行的最后一段

          awk -F: '/\/bin/{print $0}' a.txt        打印含有/bin的整行(使用右斜杠\取消左斜杠/的特殊含义)

 

 

        没有定位表示定位所有

      命令:

        {print $n}    打印第n行

 

 

 

三、grep

  过滤

 

  grep 选项 "过滤规则" 文件

 

  选项:

    -n      显示行号

    -i      忽略大小写

    -l      返回文件名

    -r      递归

    -v      取反

 

    grep -rl 'eth0' /etc/    查找/etc/下内容含有eth0的文件

 

 

  过滤规则

    正则过滤

 

 

 

四、杀进程

  linux

    ps aux    列出所有进程

    kill -9 pid    强制杀死进程

 

  windows

    1、任务管理器

    2、cmd命令

      tasklist    列出进程

      taskkill /F /pid    强制杀死进程

 

posted @ 2020-10-23 16:31  大胡萝卜没有须  阅读(142)  评论(0)    收藏  举报