• Linux三剑客awk之行和列


    一、介绍

    AWK 是一种处理文本文件的语言,是一个强大的文本分析工具,也是一门语言,有自己的数据结构,可以进行过滤、统计、计算、取行取列等操作

    之所以叫 AWK 是因为其取了三位创始人 Alfred Aho,Peter Weinberger, 和 Brian Kernighan 的 Family Name 的首字符

    wak -F, 'BEGIN{print "name"}{print $2}END{print "end of file"}' oldboy.txt
    wak -F, 'BEGIN{print "name"}NR==2{print $2}END{print "end of file"}' oldboy.txt  # 条件为,行==2
    
    • 1
    • 2

    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述

    二、awk行与列

    awk中名词说明
    记录,record每行默认以回车分割
    字段,域,field每列默认通过空格分割,-F可以指定分隔符
    内置变量说明
    NRNumber of Record,记录号,行号
    NFNumber of Field,域号,列号
    FSField Separator,每个字段的分隔符,-vFS可修改分隔符
    OFSOut Field Separator,每个字段的输出分隔符,默认是空格,-vOFS可修改输出分隔符

    三、awk取行

    awk取行
    NR==1取第一行
    NR>=1 && NR <=5取第1~5行
    /101/,/105/从含有字符串101的行到含有字符串105的行

    在这里插入图片描述

    四、awk取列

    • -F:指定分隔符,默认是空格/连续空格/tab
    • $3:取出第3行,列数从1开始,不从0开始
    • $0:表示一整行
    • $NF:表示最后一列
    • $(NF-1):表示倒数第二列
    awk '{print $1}'
    awk '{print $1,$9}'
    
    • 1
    • 2

    在这里插入图片描述
    在这里插入图片描述

    • 取出整行
    awk 'NR==4{print $0}'
    
    • 1

    在这里插入图片描述

    • 取出/etc/passwd的第一列和最后一列
    awk -F: '{print $1,$NF}' /etc/passwd
    
    • 1

    在这里插入图片描述

    • 使用awk交换/etc/passwd第一列和最后一列的内容

    在这里插入图片描述

    awk -F: '{print $NF,$2,$3,$4,$5,$6,$1}' /etc/passwd
    awk -F: '{print $NF":"$2":"$3":"$4":"$5":"$6":"$1}' /etc/passwd
    awk -vFS=: -vOFS=: '{print $NF,$2,$3,$4,$5,$6,$1}' /etc/passwd
    
    • 1
    • 2
    • 3
    • 取出ip地址
    ip a s ens33 | awk -F"[ /]+" 'NR==4{print $3}'
    ip a s ens33 | awk -vFS="[ /]+" 'NR==4{print $3}'
    
    • 1
    • 2

    在这里插入图片描述

  • 相关阅读:
    流水线的实现
    在 Kubernetes 上部署 DM
    在Qt中使用MySQL
    内网开发之后端配置前端项目流程
    封装了一个居左的iOS轮播视图
    C#基础语法--运算符
    leetcode分类刷题:栈(Stack)(三、下一个更大的数)
    .NET 8 发布的最后一个预览版Preview 7, 下个月发布RC
    实施MES管理系统前,要对哪些问题进行评估
    vue学习之组件化开发
  • 原文地址:https://blog.csdn.net/qq_42500831/article/details/126360893