美文网首页
Linux命令 awk案例

Linux命令 awk案例

作者: bioschool点cn | 来源:发表于2024-01-26 15:48 被阅读0次

使用的示例文件如下:

$ 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

实现行列转换

相关文章

  • Linux

    linux awk命令详解、linux awk命令Linux常用操作指令Linux netstat命令详解 awk...

  • awk命令

    下文来自:美团 吴孟达更多AWK命令请参考:Linux awk 命令扩展:linux sort,uniq,cut,...

  • Linux | awk

    参考:http://www.runoob.com/linux/linux-comm-awk.html awk命令的...

  • Linux 学习笔记(十四):Linux 正则表达式基础

    grep 命令 作为linux中最为常用的三大文本(awk(Linux awk教程),sed(Linux sed教...

  • Linux的awk命令

    Linux的awk命令 众所周知awk命令是Linux一个非常重要又难以掌握的命令,下面对这个命令进行一个详细的说...

  • Linux常用命令总结

    Linux常用命令指南 @Date 2017.05.23 tail awk awk ' pattern {acti...

  • Linux 常用命令总结

    linux 命令速查手册linux 常用操作命令 sed 简明教程 awk 简明教程 常用命令 ls ...

  • Linux命令学习之:awk命令

    Linux命令学习之:awk命令 简介 awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk...

  • awk的用法

    一、awk命令用法 在Linux中,awk 即 gawk , awk的二进制文件为gawk的链接文件; ...

  • 自动化脚本实践(Shell + Expect)

    Linux Shell脚本入门: Linux awk 命令 | 菜鸟教程 Shell 教程 | 菜鸟教程 lin...

网友评论

      本文标题:Linux命令 awk案例

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