返回顶部
首页 > 资讯 > 操作系统 >Linux命令学习手册-awk
  • 699
分享到

Linux命令学习手册-awk

2023-06-05 16:06:30 699人浏览 泡泡鱼
摘要

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

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)。

其它

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

--结束END--

本文标题: Linux命令学习手册-awk

本文链接: https://lsjlt.com/news/243735.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Linux命令学习手册-awk
    awk '条件类型1{动作1} 条件类型2{动作2} ...' filename功能相较于 sed 常常作用于一整个行的处理, awk 则比较倾向于一行当中分成数个『字段』来处理。描述awk 的处理流程读入第一行,并将第一行的资料填入 $0...
    99+
    2023-06-05
  • Linux命令学习手册-file
    file [-beLvz][-f <名称文件>][-m <魔法数字文件>...][文件或目录...]功能辨识文件类型。举例检查文件类型$file file.c file /dev/hda输入之后,输出如下:file....
    99+
    2023-06-05
  • Linux命令学习手册-df
    df -[选项] [文件...]功能检查文件系统的磁盘空间占用情况。可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息。 df 命令可显示所有文件系统对i节点和磁盘块的使用情况。描述该命令各个选项的含义如下: -a 显示所...
    99+
    2023-06-05
  • awk命令学习
    awk是行处理器: 相比较屏幕处理的优点,在处理庞大文件时不会出现内存溢出或是处理缓慢的问题,通常用来格式化文本信息awk处理过程: 依次对每一行进行处理,然后输出awk命令形式:awk [-F|...
    99+
    2024-04-02
  • 学习手册--Linux基础篇
    目录1. linux系统介绍1.1 linux的概述1.2 linux的优势1.3 linux的分类1.4 常见的发行版linux系统2. Linux的安装3. Linux的基础篇3.1 目录结构3.1.1 那具体有哪些...
    99+
    2022-06-04
    Linux学习 Linux基础
  • Linux awk命令详解
    awk 文章目录 awkLinux三剑客grep 查找与匹配文本sed 文本编辑,处理匹配到的文本内容awk 格式化文本文件,对文本文件进行更复杂的加工处理分析 输出第二列内容输出多...
    99+
    2023-09-11
    linux 服务器 运维
  • Linux awk 命令详解
    AWK是一种处理文本文件的语言,是一个强大的文本分析工具。之所以叫AWK是因为其取了三位创始人 Alfred Aho,Peter Weinberger, 和 Brian Kernighan 的 Family Name 的首字符awk是一个强...
    99+
    2023-06-05
  • 学习Linux命令之history
    这篇文章将为大家详细讲解有关学习Linux命令之history,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。前言你们有没有在使用linux开发时执行了很长的一条命令,然后过了一会要想在执行这条命令就需要重...
    99+
    2023-06-06
  • Linux高级篇学习手册(二)
    目录1. linux的crontab定时任务1.1 配置定时任务2. Linux的服务管理6.1 服务管理2.2 服务自启动2.3 演示效果总结1. Linux的crontab定时任务 任务调度:是...
    99+
    2022-06-04
    Linux学习 Linux基础
  • Linux高级篇学习手册(一)
    目录1. linux的用户管理 1.1 添加用户1.2 删除用户1.3 查询用户信息1.4 切换用户 1.5 对组操作2. Linux的文件权限2.1 查看资源的权限2.2 添加权限语法2.3 删除权...
    99+
    2022-06-04
    Linux学习 Linux基础
  • 总结Linux 常用命令手册
    非常实用的 Linux 命令手册,查看超级方便 NO 分类 ...
    99+
    2022-06-03
    Linux 命令大全
  • 【Linux学习】Linux必备命令之cp命令详解
    cp命令是Linux中的一个常用命令,用于将文件或目录复制到指定位置。下面是关于cp命令的一些详细解释和用法:1. 命令格式:cp ...
    99+
    2023-09-09
    Linux
  • python学习手册.fist
    # 1.注释    # 行注释  #         # print('****')     # 多行注释三个双引号或者单引号         '''print('****')            print('****')       ...
    99+
    2023-01-31
    手册 python fist
  • 详解Linux中的awk命令
    简介 awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大。简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。...
    99+
    2022-06-04
    linux awk 命令 linux awk
  • linux中awk命令怎么用
    这篇文章给大家分享的是有关linux中awk命令怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。awk是一种模式扫描和处理语言,在对数据进行分析处理时,是十分强大的工具。awk [options] '...
    99+
    2023-06-09
  • Linux中“awk”命令的用法
    Linux中“awk”命令的用法,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。awk是一个强大的文本分析工具,简单来说awk就是把文件逐行读入,(空格,制表符)为默认分隔符...
    99+
    2023-06-05
  • linux awk命令如何使用
    今天小编给大家分享一下linux awk命令如何使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解...
    99+
    2023-02-02
    linux awk
  • 学习linux常用命令(推荐)
    一、文件系统的管理 tips:输入命令的时候要常用tab键来补全 ls 查看目录信息 ( ls / ) ls -l 等价于 ll pwd 查看当前所处的路径 cd 切换目录 (cd /) ,如果不...
    99+
    2022-06-04
    常用命令 linux
  • Linux学习之mkdir命令详解
    目录前言1. 文件概念基础知识2. mkdir命令前言 最近几天越来越对linux很感兴趣了, 想再见塔克斯的心情也是越来越浓烈, 自从它给我留了110110110之后,就没了联系。 到现在我也是一头雾水, 我又找不到它...
    99+
    2022-06-04
    Linux中mkdir命令详解 mkdir创建目录命令
  • linux命令学习之10个网络命令和监控命令
    网络和监控命令类似于这些: hostname, ping, ifconfig, iwconfig, netstat, nslookup, traceroute, finger, telnet, ethtoo...
    99+
    2022-06-04
    命令 网络 linux
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作