三剑客命令awk

01. awk命令格式与操作原理

    命令格式:

sed [参数] '指令信息'  文件信息

awk [选项] '模式{动作}' [文件信息]

模式: 匹配的条件 /oldboy/

02. awk实践操作过程:

    生成模拟环境

cat >> ~/reg.txt<

Zhang  Dandan    41117397    :250:100:175

Zhang  Xiaoyu    390320151  :155:90:201

Meng  Feixue    80042789    :250:60:50

Wu    Waiwai    70271111    :250:80:75

Liu    Bingbing  41117483    :250:100:175

Wang  Xiaoai    3515064655  :50:95:135

Zi    Gege      1986787350  :250:168:200

Li    Youjiu    918391635  :175:75:300

Lao    Nanhai    918391635  :250:100:175

EOF

01. 显示xiaoyu的姓氏和ID号码


    NR==n行数

显示第二行

awk 'NR==2' ~/reg.txt

    Zhang  Xiaoyu    390320151  :155:90:201

awk 'NR==2{print $0}' ~/reg.txt

    Zhang  Xiaoyu    390320151  :155:90:201

    字符查找

~  表示按列进行匹配

!~ 表示按列进行排除匹配

awk '$2~/Xiaoyu/' ~/reg.txt  按列匹配Xiaoyu的行

取出第二行的第一列和第三列

awk 'NR==2{print $1,$3}' ~/reg.txt

    Zhang 390320151

    awk 'NR==2{print $1" "$3}' ~/reg.txt

    Zhang 390320151 

awk '$2~/Xiaoyu/{print $1" "$3}' ~/reg.txt

    Zhang 390320151


02. 姓氏是zhang的人,显示他的第二次捐款金额及他的名字 

字符查找

取出第一列带有zhang的行

awk '$1~/Zhang/' reg.txt

    Zhang  Dandan    41117397    :250:100:175

    Zhang  Xiaoyu    390320151  :155:90:201

    awk '/^Zhang/' reg.txt 在这是zhang开头的行

    Zhang  Dandan    41117397    :250:100:175

    Zhang  Xiaoyu    390320151  :155:90:201


以张开头的行取出第二列和第四列

awk '/^Zhang/{print $2,$4}' reg.txt

    Dandan :250:100:175

    Xiaoyu :155:90:201

默认以空格为分割符 根据需求精准取列需指定分割符 以空格或者冒号为分隔符 取出以zhang开头行的第二列和第五列

awk -F "[ :]+" '/^Zhang/{print $2,$5}' reg.txt

    Dandan 100

    Xiaoyu 90

取出第二列和倒数第二行NF-1 需要括号括起来  不然是在取出的结果上减一

awk -F "[ :]+" '/^Zhang/{print $2,$(NF-1)}' reg.txt

    Dandan 100

    Xiaoyu 90

    awk参数说明:

-F  用于指定awk切割列的条件信息

    利用[]+ 可以将连续多个切割字符整合为一个整体


03. 显示所有以41开头的ID号码的人的全名和ID号码

第一历程: 根据需求找到符合条件的信息

[[email protected] ~]# awk '$3~/^41/' reg.txt

    Zhang  Dandan    41117397    :250:100:175

    Liu    Bingbing  41117483    :250:100:175

第二历程: 满足条件的信息进行处理

[[email protected] ~]# awk '$3~/^41/{print $1,$2,$3}' reg.txt

    Zhang Dandan 41117397

    Liu Bingbing 41117483

    04. 显示所有ID号码最后一位数字是1或5的人的全名

第一历程: 根据需求找到符合条件的信息

awk '$3~/[15]$/' reg.txt

    Zhang  Xiaoyu    390320151  :155:90:201

    Wu    Waiwai    70271111    :250:80:75

    Wang  Xiaoai    3515064655  :50:95:135

    Li    Youjiu    918391635  :175:75:300

    Lao    Nanhai    918391635  :250:100:175

awk '$3~/[15]$/{print $1,$2}' reg.txt

    Zhang Xiaoyu

    Wu Waiwai

    Wang Xiaoai

    Li Youjiu

    Lao Nanhai

05. 显示Xiaoyu的捐款,每个时都有以$开头, 如$110$220$330

添加信息用双引号引起来

awk '$2~/Xiaoyu/{gsub(/:/,"$",$4);print $4}' reg.txt

    $155$90$201

你可能感兴趣的:(三剑客命令awk)