编程入门(七)之【Linux进阶操作AWK】

简介: 编程入门(七)之【Linux进阶操作AWK】

🔥前言

首先我们要了解什么是AWK:

Awk是一种用于文本处理和数据提取的编程语言。它通常用于对结构化文本数据进行扫描和处理。Awk语言是根据其三位创始人Alfred Aho、Peter Weinberger和Brian Kernighan的姓氏首字母命名的。Awk提供了强大的文本处理功能,包括模式匹配、提取数据、格式化输出等。

为什么用AWK

Awk语言被用于处理一些文本文件、日志文件等,对数据进行分析和处理,不用加载整个文件,而是逐行进行加载,逐行进行处理。

如何使用AWK

Awk程序由模式(pattern)和动作(action)组成,根据模式匹配相应的数据行,并执行相应的动作。

AWK实际操作

根据AWK的使用介绍,我们在Linux系统中来进行AWK操作,首先准备一txt文件:

101,labixiaoxin,CEO
102,xiaoming,CFO
103,xzs,dagongzai
104,zhangsan,CTO
105,shenlong,CMO
106,xiaozhupeiqi,COO

新建文件:

展示文件内容方便后面的AWK操作:

🚀使用AWK进行取文件行

1、根据指定行号获取

awk 'NR==2' yu.txt

🔥NR 行号-------用于显示行号与指定获取行号

2、根据行号范围获取

awk 'NR>=2 && NR<=4'  yu.txt

🔥 &&

awk 'NR==2 || NR==4' yu.txt

🔥 ||

awk 'NR==2,NR==4' yu.txt

🔥 范围符号

🚀根据AWK指定内容获取

类似于grep筛选语句

1、指定内容获取

awk '/xzs/' yu.txt

2、指定内容范围获取(用于对日志文件时间段的获取)

awk '/101/,/105/' yu.txt

🚀使用AWK进行取文件列

🔥取列格式:

数据源 | awk ‘{动作}’ 数据源文件

示例如下:

1、取ls -l 命令中的第一列和第三列

ls -l | awk '{print $1,$3}'

2、取ls -l 每一行数据和第四列数据 每一行附上行号

ls -l | awk '{print NR,$0,$4}

3、取第一列和最后一列

ls -l | awk '{print $1,$NF}'

🔥取列分割

awk默认识别以空格或者连续空格,或者tab键作为分割符,若要用其他分割符号 :/需要用-F指定:数据源|awk -F ‘分隔符’ ‘{动作}’ 数据源

实例:

1、取出 第一列和第三列,并按列对齐

默认识别空格符不能得到需求

awk '{print $1,$3}' /etc/passwd | column -t

加上分割识别符

awk -F, '{print $1,$3}' yu.txt | column -t

2、提取IP地址信息

ifconfig 查看ip位置

进行筛选:ifconfig | awk '/eth0/,/inet/' | awk 'NR == 2' | awk '{print $2}'

🚀正则表达式

正则使用 --表达式 (建议切割符号,尽量唯一,左右边界唯一)

.*? 0~多个字符

+字符连续出现

^以xxx内容开头

$以内容结尾

[]字符或者[abcz] a或者b或者c或者z

| 字符串或者 abc|z abc或者z

示例:提取下列echo ' inet 10.0.0.200/24 brd 10.0.0.255 scope global ens32' >ip.txt 文本中的ip信息

原方法:利用管道提取两次

awk '{print $2}' ip.txt | awk -F'/' '{print $1}'

正则表达式:

awk -F '[ /]+' '{print $3}' ip.txt

综合示例

1、awk完整格式:支持正则表达式

2、awk -F’分隔符’ ‘条件{动作}’ 数据源

3、条件:关于行的操作 找谁? 根据行号|内容找 找指定行

动作:关于列的操作 干啥? 打印print列操作{} 指定列

示例:

取出/etc/passwd中的 第一行中的第一列和第三列

awk -F':' 'NR==1{print $1,$3}' /etc/passwd

awk 包含符号 ~ 不包含!~

示例:

找到第三列包含1或者2开头的行 /etc/passwd

awk -F':' '$3 ~ /[^12]/{print $1,$3}' /etc/passwd

过滤出 /etc/passwd 第三列以0或者3结尾的行,显示第一列和第三列内容

awk -F: '$3 ~ /[03]$/{print $1,$3}' /etc/passwd

⭐️⭐️⭐️总结

1、awk格式

awk -F'分隔符' '可选条件{可选动作}' 数据源

默认分割符号 空格或者连续空格 或者TAB按键

条件 找谁?找行? 如果没有条件 对所有行操作

动作 干啥? print 打印 如果没有就是显示整行

2、awk支持的符号

1 &&  # 与   
  ||  # 逻辑或者   
  ,   # 范围符号
2     # /内容/     
3 {} # 动作符号    
  NR # 行号   Nunber of Record  #记录行 
  $0  一整行     $1 第一列  $3   第三列  
  $NF # Number of Field 最后一个字段 
4  ~   # 包含符号           
   !~  # 不包含符号

3、awk支持正则表达式

目录
相关文章
|
安全 算法 Ubuntu
Linux(openssl)环境:编程控制让证书自签的技巧。
总结:在Linux环境中,OpenSSL是一个非常实用的工具,可以帮助我们轻松地生成自签名证书。通过上述三个简单步骤,即可为内部网络、测试环境或开发环境创建自签名证书。但在公共访问场景下,建议购买经过权威认证机构签发的证书,以避免安全警告。
733 13
|
Linux
Linux编程: 在业务线程中注册和处理Linux信号
通过本文,您可以了解如何在业务线程中注册和处理Linux信号。正确处理信号可以提高程序的健壮性和稳定性。希望这些内容能帮助您更好地理解和应用Linux信号处理机制。
331 26
|
JavaScript Ubuntu Linux
如何在阿里云的linux上搭建Node.js编程环境?
本指南介绍如何在阿里云Linux服务器(Ubuntu/CentOS)上搭建Node.js环境,包含两种安装方式:包管理器快速安装和NVM多版本管理。同时覆盖全局npm工具配置、应用部署示例(如Express服务)、PM2持久化运行、阿里云安全组设置及外部访问验证等步骤,助你完成开发与生产环境的搭建。
|
Linux
Linux编程: 在业务线程中注册和处理Linux信号
本文详细介绍了如何在Linux中通过在业务线程中注册和处理信号。我们讨论了信号的基本概念,并通过完整的代码示例展示了在业务线程中注册和处理信号的方法。通过正确地使用信号处理机制,可以提高程序的健壮性和响应能力。希望本文能帮助您更好地理解和应用Linux信号处理,提高开发效率和代码质量。
349 17
|
Unix Linux Shell
Linux新手入门手册
在Linux或类Unix系统中,掌握一系列基础命令和快捷键是提升工作效率的关键。这些工具和技巧不仅能帮助用户更高效地管理系统,还能在日常使用中带来极大的便利。以下是对这些基础操作与快捷键的详细解析大全。
354 9
|
存储 监控 Linux
嵌入式Linux系统编程 — 5.3 times、clock函数获取进程时间
在嵌入式Linux系统编程中,`times`和 `clock`函数是获取进程时间的两个重要工具。`times`函数提供了更详细的进程和子进程时间信息,而 `clock`函数则提供了更简单的处理器时间获取方法。根据具体需求选择合适的函数,可以更有效地进行性能分析和资源管理。通过本文的介绍,希望能帮助您更好地理解和使用这两个函数,提高嵌入式系统编程的效率和效果。
823 13
|
监控 Linux 数据处理
Linux grep技巧 结合awk查询
结合 `grep` 和 `awk`,可以实现灵活、高效的文本处理和数据分析。`grep` 用于快速过滤符合条件的行,`awk` 用于进一步处理和提取数据。这种组合使用在日志分析、数据处理和系统监控等场景中尤为常见。掌握这两者的基本用法和组合技巧,可以大大提升在 Linux 环境下的工作效率。
608 7
|
Unix Linux Shell
linux入门!
本文档介绍了Linux系统入门的基础知识,包括操作系统概述、CentOS系统的安装与远程连接、文件操作、目录结构、用户和用户组管理、权限管理、Shell基础、输入输出、压缩打包、文件传输、软件安装、文件查找、进程管理、定时任务和服务管理等内容。重点讲解了常见的命令和操作技巧,帮助初学者快速掌握Linux系统的基本使用方法。
987 3
|
Linux Perl
Linux awk命令使用技巧
【10月更文挑战第16天】Linux awk命令使用技巧
481 4
|
运维 监控 Shell
深入理解Linux系统下的Shell脚本编程
【10月更文挑战第24天】本文将深入浅出地介绍Linux系统中Shell脚本的基础知识和实用技巧,帮助读者从零开始学习编写Shell脚本。通过本文的学习,你将能够掌握Shell脚本的基本语法、变量使用、流程控制以及函数定义等核心概念,并学会如何将这些知识应用于实际问题解决中。文章还将展示几个实用的Shell脚本例子,以加深对知识点的理解和应用。无论你是运维人员还是软件开发者,这篇文章都将为你提供强大的Linux自动化工具。