awk简单使用

废话不多说,直接上操作。
示例文本:

水果 苹果,橘子,香蕉,鸭梨
蔬菜 豆角,茄子,萝卜,白菜
手机 华为,酷派,联想,小米

0.awk完整结构(以计算某列总和为例)
echo -e "123\n234\n345\n456\n567\n678" | awk 'BEGIN{sum=0;printf "总和:"}{if(NR<=4)printf $1"+";sum+=$1; if(NR==6)printf $1 "="}END{print sum}'


1.通过空格分割种类与详细名称
awk -F ' ' '{print "种类:"$1,"包含:"$2}' file

示例图片

通过-F命令,使用空格‘' '’对每一行数据进行分割
通过‘'{print "xxx"$n}'’ 进行拼接分割后的第n列数据,并打印


2.在1的基础上继续拆封详细子项
awk -F '[ ,]' '{print "种类:"$1,"包含:a="$2,"b="$3,"c="$4,"d="$5}' file

image.png

通过‘'[ ,]'’使每一行数据一次按空格、逗号进行分割数据


3.打印出行内包含橘子的数据
awk -F '[ ]' '$2~/橘子/{print $1,$2}' file

示例图片

通过"$2~/橘子/"匹配到这一列内包含‘橘子’的每行数据,进行打印


4.打印出某列以华为开头的数据
awk -F '[ ]' '$2~/^华为/{print $1,$2}' file

示例图片


5.根据空格分割后,打印第一列的长度
awk -F '[ ]' '{print length($1),$1}' file

示例图片


修改示例文本:

fruit 苹果,橘子,香蕉,鸭梨
greenstuff 豆角,茄子,萝卜,白菜
phone 华为,酷派,联想,小米

6.打印种类名称长度为5的行数据
awk -F '[ ]' 'length($1)==5{print length($1),$1,$2}' file

示例图片


7.打印符合6题的数据行数及文件内数据总行数
awk -F '[ ]' 'length($1)==5{i++;print length($1),$1,$2}END{print i,NR}' file

示例图片


8.NF、NR、FNR简单说明
8.1 打印第1列,第12行数据
awk 'NF=1&&NR==12' executor-application.log
8.2 含义
NF:表示列
1NF:表示第一列
$NF:表示最后一列


9.排序问题
可以使用系统sort sort -r 进行正序倒序排列


10.结果去重
awk '!(1 in a){a[1];print $1}'


持续更新中...

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • awk awk的工作模式是扫描文件中的每一行, 并且对符合条件的行进行处理, 处理的时候可以针对整行, 也可以针对...
    董成鹏阅读 507评论 0 0
  • 今天想用简单的shell操作数据中的列,发现awk特别好用,简单记录下 通常使用 awk来获取多个列的情况,比如有...
    早点起床晒太阳阅读 265评论 0 0
  • 匹配输出cat test.txt | grep "result" | awk -v FS="|" '{if($4 ...
    星城天空阅读 184评论 0 0
  • 参考文章:https://www.cnblogs.com/along21/p/10366886.html#重要!参...
    一只烟酒僧阅读 405评论 0 2
  • 概述 Awk是一种便于使用且表达能力强的程序设计语言,可应用于各种计算和数据处理任务 举例说明 有用的awk程序往...
    saidev阅读 262评论 0 0