day20

作者: 杰S咪 | 来源:发表于2019-04-24 18:02 被阅读0次
    2019-04-22 第二十天.png

    三剑客—awk

    NR

    根据行查找文件内容

    查找第二行内容

    [root 22:41 @ GYJ ~]# awk 'NR==2' oldboy.txt
    Zhang Xiaoyu    390320151  :155:90:201
    

    查找2行中前2列

    [root 22:28 @ GYJ ~]# awk 'NR==2{print $1,$2}' oldboy.txt
    Zhang Xiaoyu
    

    $


    根据列查找文件内容

    查找文件中1列2列

    [root 22:44 @ GYJ ~]# awk '{print $1,$2}' oldboy.txt
    Zhang Dandan
    Zhang Xiaoyu
    Meng Feixue
    Wu Waiwai
    Liu Bingbing
    Wang Xiaoai
    Zi Gege
    Li Youjiu
    Lao Nanhai
    [root 22:59 @ GYJ ~]# 
    

    查找1列中以Zhang开头的行

    [root 22:18 @ GYJ ~]# awk '$1~/^Zhang/'  oldboy.txt
    Zhang Dandan    41117397   :250:100:175
    Zhang Xiaoyu    390320151  :155:90:201
    [root 22:18 @ GYJ ~]#
    

    查找2列中以i结尾的行

    [root 22:23 @ GYJ ~]# awk '$2~/i$/' oldboy.txt
    Wu    Waiwai    70271111   :250:80:75
    Wang  Xiaoai    3515064655 :50:95:135
    Lao   Nanhai    918391635  :250:100:175
    [root 22:24 @ GYJ ~]#
    

    查找2列中以i结尾的行的前三列

    [root 22:28 @ GYJ ~]# awk '$2~/i$/{print $1,$2,$3}' oldboy.txt
    Wu Waiwai 70271111
    Wang Xiaoai 3515064655
    Lao Nanhai 918391635
    [root 22:28 @ GYJ ~]#
    

    $NF

    显示最后一列

    [root 23:02 @ GYJ ~]# awk '{print $NF}' oldboy.txt
    :250:100:175
    :155:90:201
    :250:60:50
    :250:80:75
    :250:100:175
    :50:95:135
    :250:168:200
    :175:75:300
    :250:100:175
    [root 23:06 @ GYJ ~]# 
    

    不指定分隔符

    系统默认‘空格’为分隔符

    [root 00:10 @ GYJ ~]# awk '{print $0}' gyj.txt
    1 2 3 4:5:6 
    a b c d:e:f
    [root 00:10 @ GYJ ~]# awk '{print $1}' gyj.txt
    1
    a
    [root 00:11 @ GYJ ~]# awk '{print $2}' gyj.txt
    2
    b
    [root 00:11 @ GYJ ~]# awk '{print $3}' gyj.txt
    3
    c
    [root 00:11 @ GYJ ~]# awk '{print $4}' gyj.txt
    4:5:6
    d:e:f
    [root 00:11 @ GYJ ~]# 
    

    -F

    指定分隔符":"

    [root 00:26 @ GYJ ~]# awk  '{print $0}' gyj.txt
    1 2 3 4:5:6 
    a b c d:e:f
    [root 00:27 @ GYJ ~]# awk -F: '{print $1,$2,$3}' gyj.txt
    1 2 3 4 5 6 
    a b c d e f
    [root 00:11 @ GYJ ~]# awk -F: '{print $1}' gyj.txt
    1 2 3 4
    a b c d
    [root 00:15 @ GYJ ~]# awk -F: '{print $2}' gyj.txt
    5
    e
    [root 00:15 @ GYJ ~]# awk -F: '{print $3}' gyj.txt
    6 
    f
    

    指定分隔符

    空格与冒号

    [root 00:26 @ GYJ ~]# awk  '{print $0}' gyj.txt
    1 2 3 4:5:6 
    a b c d:e:f
    [root 00:18 @ GYJ ~]# awk -F"[ :]" '{print $1}' gyj.txt
    1
    a
    [root 00:18 @ GYJ ~]# awk -F"[ :]" '{print $2}' gyj.txt
    2
    b
    [root 00:19 @ GYJ ~]# awk -F"[ :]" '{print $3}' gyj.txt
    3
    c
    [root 00:19 @ GYJ ~]# awk -F"[ :]" '{print $4}' gyj.txt
    4
    d
    [root 00:19 @ GYJ ~]# awk -F"[ :]" '{print $5}' gyj.txt
    5
    e
    [root 00:19 @ GYJ ~]# awk -F"[ :]" '{print $6}' gyj.txt
    6
    f
    [root 00:19 @ GYJ ~]# 
    

    如果中间空格或者指定字符比较多
    那么格式为-F"[ :]+"

    -v

    修改或者创建内置变量
    -vOFS=" $"

    [root 00:26 @ GYJ ~]# awk  '{print $0}' gyj.txt
    1 2 3 4:5:6 
    a b c d:e:f
    [root 00:27 @ GYJ ~]# awk -F: '{print $1,$2,$3}' gyj.txt
    1 2 3 4 5 6 
    a b c d e f
    [root 00:27 @ GYJ ~]# awk -F: -vOFS="$" '{print $1,$2,$3}' gyj.txt
    1 2 3 4$5$6 
    a b c d$e$f
    [root 00:27 @ GYJ ~]# awk -F: -vOFS="#" '{print $1,$2,$3}' gyj.txt
    1 2 3 4#5#6 
    a b c d#e#f
    [root 00:28 @ GYJ ~]# 
    

    第一列,最后一列调换

    [root 00:39 @ GYJ ~]# awk '{print $0}' /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
    [root 00:39 @ GYJ ~]# awk -F"[ :]" -vOFS=":" '{A=$1;$1=$NF;$NF=A;print $0}' /etc/passwd
    /bin/bash:x:0:0:root:/root:root
    /sbin/nologin:x:1:1:bin:/bin:bin
    /sbin/nologin:x:2:2:daemon:/sbin:daemon
    /sbin/nologin:x:3:4:adm:/var/adm:adm
    /sbin/nologin:x:4:7:lp:/var/spool/lpd:lp
    

    相关文章

      网友评论

          本文标题:day20

          本文链接:https://www.haomeiwen.com/subject/mdgbgqtx.html