Linux命令 awk案例

使用的示例文件如下:

$ cat awk_case.txt 
a    a1    a2    a3
b    b1    b2    b3
c    c1    c2    c3

输出指定列:

$ awk '{print $1,$3}' awk_case.txt #输出第一列和第三列
a a2
b b2
c c2
$ awk '{printf "%-4s %-8s\n", $1,$3}' awk_case.txt #格式化输出
a    a2      
b    b2      
c    c2  

指定分隔符:

$ awk -F1 '{print $2}' awk_case.txt #指定分隔符为1
    a2    a3
    b2    b3
    c2    c3
$ awk 'BEGIN{FS="1"}{print $2}' awk_case.txt #使用内建变量FS,效果相同
    a2    a3
    b2    b3
    c2    c3

注:FS的优先级高于-F,即同时指定-F和FS时会使用FS参数

插入字段:

$ awk '{$2=$2"\t"$1"4";print $0}' awk_case.txt #在第二列的后面插入*4。
a a1    a4 a2 a3
b b1    b4 b2 b3
c c1    c4 c2 c3

解释:默认-F参数为空白或者Tab键,2表示第二列,1表示第一列;在'{}'中,空白表示连接符。通过=修改了第二列的值之后输出全行:print $0

去重复:

$ cat awk_case.txt 
a    a1    a2    a3
a    a4    a5    a6
b    b1    b2    b3
c    c1    c2    c3
$ awk '{ if (!arr[$1]++) {print} }' awk_case.txt #if 判断,根据第一列去重复
a    a1    a2    a3
b    b1    b2    b3
c    c1    c2    c3
$ awk '!arr[$1]++{print}' awk_case.txt #根据第一列去重复
a    a1    a2    a3
b    b1    b2    b3
c    c1    c2    c3

解释:arr为数组,通过下标记录arr中存储的值

统计次数:

$ awk '{arr[$1]++}END{OFS="\t";for(idx in arr){print arr[idx],idx}}' awk_case.txt 
2    a
1    b
1    c

统计第一列出现的次数;arr[$1]++循环文件,END最后执行一次,并使用for循环输出数组中的值和ID

行列转换:

$ awk '
    {
      for(i=1;i<=NF;i++){
        if(!(i in arr)){
          arr[i]=$i
        } else {
            arr[i]=arr[i]" "$i
        }
      }
    }
    END{
        for(i=1;i<=NF;i++){
            print arr[i]
        }
    }
' awk_case.txt

实现行列转换

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 一、awk简介 awk其名称得自于它的创始人 Alfred Aho 、Peter Weinberger 和 Bri...
    钟离惜阅读 10,610评论 0 2
  • Linux awk 简介 AWK是一种处理文本的语言,是一个强大的文本分析工具。它适合文本处理和报表生成,语法较为...
    纠结啦阅读 1,490评论 0 0
  • 参考AWK是一种处理文本文件的语言,是一个强大的文本分析工具。之所以叫AWK是因为其取了三位创始人 Alfred ...
    生信师姐阅读 2,934评论 0 3
  • linux-awk常用命令 awk从放弃到入门[https://www.zsythink.net/archives...
    小小白的jotter阅读 4,500评论 0 7
  • 版本注意:该文件的最新版本已经更新到MWeb中了,请以那边为准,这儿仅供参考。 Linux的awk命令 众所周知a...
    晚辈曾阿牛阅读 3,468评论 0 4

友情链接更多精彩内容