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 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 字符查找 取出第一列带有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切割列的条件信息 利用[]+ 可以将连续多个切割字符整合为一个整体 第一历程: 根据需求找到符合条件的信息 [[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 第一历程: 根据需求找到符合条件的信息 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 添加信息用双引号引起来 awk '$2~/Xiaoyu/{gsub(/:/,"$",$4);print $4}' reg.txt $155$90$201 01. 显示xiaoyu的姓氏和ID号码
02. 姓氏是zhang的人,显示他的第二次捐款金额及他的名字
03. 显示所有以41开头的ID号码的人的全名和ID号码
04. 显示所有ID号码最后一位数字是1或5的人的全名
05. 显示Xiaoyu的捐款,每个时都有以$开头, 如$110$220$330