我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Linux命令学习手册-awk

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Linux命令学习手册-awk

awk '条件类型1{动作1} 条件类型2{动作2} ...' filename

功能

相较于 sed 常常作用于一整个行的处理, awk 则比较倾向于一行当中分成数个『字段』来处理。

描述

awk 的处理流程

  1. 读入第一行,并将第一行的资料填入 $0, $1, $2…. 等变数当中;

  2. 依据 “条件类型” 的限制,判断是否需要进行后面的 “动作”;

  3. 做完所有的动作与条件类型;

  4. 若还有后续的『行』的数据,则重复上面 1~3 的步骤,直到所有的数据都读完为止。

经过这样的步骤,您会晓得, awk 是『以行为一次处理的单位』, 而『以字段为最小的处理单位』。

常用变量(变量名称 代表意义)

NF 每一行 ( $0 ) 拥有的字段总数

NR 目前 awk 所处理的是『第几行』数据

FS 目前的分隔字符,预设是空格键

每一行的每个字段的变量名称就是 $1, $2 … 等。还有个例外,那就是 $0 代表一整行的意思。

注意, awk 后续的所有动作以 ‘ 括住, 所以,内容如果想要以 print 打印时,记得,非变量的文字部分, printf 提到的格式中,都需要使用双引号.

逻辑运算符号

大于

< 小于

= 大于或等于

<= 小于或等于

== 等于

!= 不等于

举例

假设输入输出如下:

$lastdmtsai   pts/0        192.168.1.12     Mon Aug 22 09:40   still logged inroot     tty1                          Mon Aug 15 11:38 - 11:39  (00:01)reboot   system boot  2.6.11           Sun Aug 14 18:18         (7+15:41)dmtsai   pts/0        192.168.1.12     Fri Aug 12 12:07 - 12:08  (00:01)
  • 打印每行的第1列和第三列,并且用[TAB]隔开

    输入输出如下

    $last | awk '{print $1 "\t" $3}'dmtsai  192.168.1.12root    Monreboot  bootdmtsai  192.168.1.12

    这里,我们没有设定条件,也就是无论哪一行都做同样处理,所以第2,3行显示的有点”不正常”。由此可知awk是“迭代”处理每一行的。

  • 列出每一行的账号,目前处理的行数, 以及该行有多少字段

    输入输出如下

    $last | awk '{print $1 "\t lines: " NR "\t columes: " NF}'dmtsai   lines: 1        columes: 10root     lines: 2        columes: 9reboot   lines: 3        columes: 9dmtsai   lines: 4        columes: 10
  • 查阅 /etc/passwd ,第3栏小于 10 以下的数据,并且仅列出账号与第3栏

    输入输出如下:

    $cat /etc/passwd | awk '{FS=":"} $3 < 10 {print $1 "\t " $3}'root:x:0:0:root:/root:/bin/bashbin      1daemon   2......(以下省略)......

    这里,在 /etc/passwd 当中是以冒号 “:” 来作为字段的分隔,所以需要设置一下。但是我们读入第一行的时候, 那些变数 $1, $2… 预设还以空格键为分隔,所以虽然我们定义了 FS=”:” 了, 但是却仅能在第二行后才开始生效(可能因为一般第一行仅仅是列名不需处理,而这里却是特例,见例4改进)。

  • 对上面过滤的操作改进

    输入输出如下:

    $ cat /etc/passwd | awk 'BEGIN {FS=":"} $3 < 10 {print $1 "\t " $3}'root     0bin      1daemon   2......(以下省略)......

    利用 BEGIN 这个关键词,可以从第一行就生效了。实际除了BEGIN,还有END。

假设如下表(pay.txt)

Name    1st     2nd     3thVBird   23000   24000   25000DMTsai  21000   20000   23000Bird2   43000   42000   41000
  • 计算每一行总额,添加追加到最后一列

    输入输出如下:

    $awk 'NR==1{printf "%10s %10s %10s %10s %10s\n",$1,$2,$3,$4,"Total" }NR>=2{total = $2 + $3 + $4printf "%10s %10d %10d %10d %10.2f\n", $1, $2, $3, $4, total}'Name        1st        2nd        3th      TotalVBird      23000      24000      25000   72000.00DMTsai      21000      20000      23000   64000.00Bird2      43000      42000      41000  126000.00

    注意:所有的动作在 {} 内,如需多个指令辅助,可利用分号 ; 间隔或直接以 [Enter] 按键来隔开每个指令,例如上面的 NR>=2 后面接的动作, 利用 total = … 那个指令来指定加总,而后续则以 printf 来格式化输;格式化输出时,在 printf 的格式设定当中,务必加上 \n ,才能进行分行;与 bash shell 的变量不同,在 awk 当中,变量可以直接使用,不需加上 $ 符号(如total)。

其它

参考资料: 《鸟哥的私房菜》

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Linux命令学习手册-awk

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Linux命令学习手册-awk

awk '条件类型1{动作1} 条件类型2{动作2} ...' filename功能相较于 sed 常常作用于一整个行的处理, awk 则比较倾向于一行当中分成数个『字段』来处理。描述awk 的处理流程读入第一行,并将第一行的资料填入 $0
2023-06-05

Linux命令学习手册-df

df -[选项] [文件...]功能检查文件系统的磁盘空间占用情况。可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息。 df 命令可显示所有文件系统对i节点和磁盘块的使用情况。描述该命令各个选项的含义如下: -a 显示所
2023-06-05

Linux命令学习手册-file

file [-beLvz][-f <名称文件>][-m <魔法数字文件>...][文件或目录...]功能辨识文件类型。举例检查文件类型$file file.c file /dev/hda输入之后,输出如下:file.c: C progr
2023-06-05
2024-04-02

Linux awk 命令详解

AWK是一种处理文本文件的语言,是一个强大的文本分析工具。之所以叫AWK是因为其取了三位创始人 Alfred Aho,Peter Weinberger, 和 Brian Kernighan 的 Family Name 的首字符awk是一个强
2023-06-05

学习手册--Linux基础篇

目录1. linux系统介绍1.1 linux的概述1.2 linux的优势1.3 linux的分类1.4 常见的发行版linux系统2. Linux的安装3. Linux的基础篇3.1 目录结构3.1.1 那具体有哪些呢?3.1.2 需要
2022-06-04

学习Linux命令之history

这篇文章将为大家详细讲解有关学习Linux命令之history,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。前言你们有没有在使用linux开发时执行了很长的一条命令,然后过了一会要想在执行这条命令就需要重
2023-06-06

总结Linux 常用命令手册

非常实用的 Linux 命令手册,查看超级方便NO分类PS1命令名用法及参数功能注解1 文件管理# lsls -a列出当前目录下的所有文件,包括以.头的隐含文件文件管理# lsls -l或ll列出当前目录下文件的详细信息文件管理# pwdp
2022-06-03

Linux高级篇学习手册(一)

目录1. linux的用户管理 1.1 添加用户1.2 删除用户1.3 查询用户信息1.4 切换用户 1.5 对组操作2. Linux的文件权限2.1 查看资源的权限2.2 添加权限语法2.3 删除权限语法2.4 修改权限语法2.5 实现演
2022-06-04

Linux高级篇学习手册(二)

目录1. linux的crontab定时任务1.1 配置定时任务2. Linux的服务管理6.1 服务管理2.2 服务自启动2.3 演示效果总结1. Linux的crontab定时任务任务调度:是指系统在某个时间执行的特定的命令或程序。任务
2022-06-04

【Linux学习】Linux必备命令之cp命令详解

cp命令是Linux中的一个常用命令,用于将文件或目录复制到指定位置。下面是关于cp命令的一些详细解释和用法:1. 命令格式:cp [选项] 源文件 目标文件- 选项说明:- -r:复制目录及其子目录内容- -i:询问是否覆盖已存在的目标文
2023-09-09

Linux中“awk”命令的用法

Linux中“awk”命令的用法,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。awk是一个强大的文本分析工具,简单来说awk就是把文件逐行读入,(空格,制表符)为默认分隔符
2023-06-05

linux中awk命令怎么用

这篇文章给大家分享的是有关linux中awk命令怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。awk是一种模式扫描和处理语言,在对数据进行分析处理时,是十分强大的工具。awk [options] patte
2023-06-09

学习一个 Linux 命令:ntpdate

ntpddate 命令用于使用网络计时协议(NTP)设置日期和时间。还可以用于同步时间,此命令需要具备root管理员权限才可执行。

linux awk命令如何使用

今天小编给大家分享一下linux awk命令如何使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。
2023-02-02

详解Linux中的awk命令

简介awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大。简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。 awk有3个不同版本:
2022-06-04

学习一个Linux命令:pstree

pstree 命令以树状图的方式展现进程之间的派生关系。

linux中如何使用awk命令

这篇文章将为大家详细讲解有关linux中如何使用awk命令,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。简介awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报
2023-06-09

Linux中的awk命令全解析

Linux中的awk命令详解,是一种文本处理工具,语法简洁,内置函数丰富。常用命令包括字段命令、比较运算符、逻辑运算符和内置函数。条件语句和循环语句可用于复杂操作。示例包括从日志中提取IP地址、计算CSV文件平均年龄和从XML中提取特定节点值。高级用法还包括自定义函数、数组和正则表达式。awk功能强大,可满足各种文本处理需求。
Linux中的awk命令全解析
2024-04-02

编程热搜

目录