zoukankan      html  css  js  c++  java
  • Linux文本操作三大利器总结:sed、awk、grep

    grep:(去除一行中需要的信息,同类与cut)

    grep全称是Global Regular Expression Print

    #常规用法
    # grep -n root /etc/passwd
    1:root:x:0:0:root:/root:/bin/bash
    30:operator:x:11:0:operator:/root:/sbin/nologin
    
    #正则表达式用法
    [root@www ~]# grep -n '[^g]oo' regular_express.txt
    2:apple is my favorite food.
    3:Football game is not use feet only.
    18:google is the best tools for search keyword.
    19:goooooogle yes!

    cut:

    [root@localhost ~]# cat /etc/passwd
    root:x:0:0:root:/root:/bin/bash
    bin:x:1:1:bin:/bin:/sbin/nologin
    daemon:x:2:2:daemon:/sbin:/sbin/nologin
    adm:x:3:4:adm:/var/adm:/sbin/nologin
    lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
    sync:x:5:0:sync:/sbin:/bin/sync
    shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
    halt:x:7:0:halt:/sbin:/sbin/halt
    mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
    operator:x:11:0:operator:/root:/sbin/nologin
    games:x:12:100:games:/usr/games:/sbin/nologin
    ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
    nobody:x:99:99:Nobody:/:/sbin/nologin
    ............................
    ---------------------------------------------------------
    [root@localhost ~]# cat /etc/passwd | cut -d ':' -f 3,4 
    0:0
    1:1
    2:2
    3:4
    4:7
    5:0
    6:0
    7:0
    8:12
    11:0
    12:100
    14:50
    99:99
    81:81
    999:999
    59:59
    998:997
    113:113
    38:38
    997:995

    sed:(对行做处理)

    [root@localhost ruby] # sed '1,2d' ab           #删除第一行到第二行
    
    [root@localhost ruby] # sed -n '1,2p' ab        #显示第一行到第二行
    
    [root@localhost ruby] # sed -n '/ruby/p' ab    #查询包括关键字ruby所在所有行

    awk:(将一行分为多个字段做处理)(重点)

    awk [-F  field-separator]  'commands'  input-file(s)
    其中,commands 是真正awk命令,[-F域分隔符]是可选的。 input-file(s) 是待处理的文件。
    在awk中,文件的每一行中,由域分隔符分开的每一项称为一个域。通常,在不指名-F域分隔符的情况下,默认的域分隔符是空格。
    #===========================================
    
    [root@www ~]# last -n 5 <==仅取出前五行
    root     pts/1   192.168.1.100  Tue Feb 10 11:21   still logged in
    root     pts/1   192.168.1.100  Tue Feb 10 00:46 - 02:28  (01:41)
    root     pts/1   192.168.1.100  Mon Feb  9 11:41 - 18:30  (06:48)
    dmtsai   pts/1   192.168.1.100  Mon Feb  9 11:41 - 11:41  (00:00)
    root     tty1                   Fri Sep  5 14:09 - 14:10  (00:01)
    
    #last -n 5 | awk  '{print $1}'          #取出第一个字段
    root
    root
    root
    dmtsai
    root
    #$0则表示所有域,$1表示第一个域,$n表示第n个域。默认域分隔符是"空白键" 或 "[tab]键",所以$1表示登录用户,$3表示登录用户ip,以此类推。
    
    #===========================================
    [chen@localhost scripts]$ cat /etc/passwd | head
    root:x:0:0:root:/root:/bin/bash
    bin:x:1:1:bin:/bin:/sbin/nologin
    daemon:x:2:2:daemon:/sbin:/sbin/nologin
    adm:x:3:4:adm:/var/adm:/sbin/nologin
    lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
    sync:x:5:0:sync:/sbin:/bin/sync
    shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
    halt:x:7:0:halt:/sbin:/sbin/halt
    mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
    operator:x:11:0:operator:/root:/sbin/nologin
    
    #cat /etc/passwd |awk  -F ':'  '{print $1}'   #-F 指定分隔符为 :
    root
    daemon
    bin
    sys
    
    #cat /etc/passwd |awk  -F ':'  '{print $1"	"$7}'    #显示第1、7个字段
    root    /bin/bash
    daemon  /bin/sh
    bin     /bin/sh
    sys     /bin/sh
    
    #搜索/etc/passwd有root关键字的所有行,并显示对应的shell
    # awk -F: '/root/{print $7}' /etc/passwd             
    /bin/bash

    其实awk可以像grep一样的去匹配第一行,就像这样: 查找某个字符

    1
    2
    3
    4
    5
    $ awk '/LISTEN/' netstat.txt
    tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN
    tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN
    tcp        0      0 127.0.0.1:9000          0.0.0.0:*               LISTEN
    tcp        0      0 :::22                   :::*                    LISTEN

    取反,显示没有LISTEN的行:

    awk '!/WAIT/' netstat.txt 

    df

  • 相关阅读:
    PHP深入浅出之命名空间(Namespace)的使用详解
    函数func_get_args详解
    验证码封装类
    PHP中SESSION自定义会话管理器
    网页开发常见问题总结
    mysql远程连接只显示部分数据库问题
    认识和学习bash
    IPv6地址格式示例及IPv6与IPv4的区别分析
    用HTTP核心模块配置一个静态Web服务器
    Nginx服务项的基本配置
  • 原文地址:https://www.cnblogs.com/hanggegege/p/5776757.html
Copyright © 2011-2022 走看看