第九周作业

awk基础

简介

       AWK是一种优良的文本处理工具。它是 Linux 中也是任何环境中现有的功能最强大
的数据处理引擎之一,相比sed常常作用于一整行的处理,awk比较倾向于将一行分成数
个“字段”来处理。所以,awk相当适合处理小型的数据处理。

基础用法

awk[选项] ‘program’ var=value file…
awk[选项] -f programfilevar=value file…
awk[选项] 'BEGIN{ 动作;… } pattern{ 动作;… } END{ 动作;… }' file ...
  • awk程序通常由:BEGIN语句块、能够使用模式匹配的通用语句块、END语句块,共3部分组成

  • program通常是被单引号或双引号中

示例

  • awk主要是处理每一行的字段内的数据,而默认的字段的分隔符为空格键或[TAB]键。举例说明,我们用cat /etc/passwd这个可以查看用户:

第九周作业

  • 若我想取出用户名称和shell类型,且名称与shell类型以冒号隔开,则成这样:
awk  -F: '{print $+1":"$7} ' /etc/passwd

第九周作业

  • 这是awk最常用的动作,通过print的功能将字段数据列出来,字段的分割可以自己选择 以什么方式隔开,-F指定域分隔符为’:’。

系统变量

  • OFS                   输出字段分隔符,默认为空白字符
  • FS                      输入字段分隔符,默认为空白字符
  • ORS                   输出记录分隔符,输出时用指定符号代替换行符
  • RS                      输入记录分隔符,指定输入时的换行符,原换行符仍有效
  • NF                      每一行的字段数量
  • NR                      行数
  • FNR                    各个文件分别计数,行数
  • ARGC                  命令行的参数个数
  • ARGV                  数组,保存的是命令行所给定的各参数
  • FILENAME        当前文件名

此外,$0变量是指整条记录,$1表示当前行的第一个域,$2表示当前行的第二个域,……以此类推。


自定义变量(区分字符大小写)

  • -v var=value

  • 在program中直接定义

两种方法:

VAR=10000;echo | awk -v VARIABLE=$VAR '{ print VARIABLE }'
var1="aaa";var2="bbb";echo | awk '{ print v1,v2 }' v1=$var1 v2=$var2

选项参数

  • -F

指明输入时用到的字段分隔符

  • -v var=value

自定义变量。


要点

  1. 逗号分隔符
  2. 输出的各item可以字符串,也可以是数值;当前记录的字段、变量或awk的表达式
  3. 如省略item,相当于print $0

printf命令

格式化输出:

printf“FORMAT”, item1, item2, ...

  1. 必须指定FORMAT
  2. 不会自动换行,需要显式给出换行控制符,
  3. FORMAT中需要分别为后面每个item指定格式符

格式符

  • %c      显示字符的ASCII码
  • %d      显示十进制整数
  • %i       显示十进制整数
  • %e      显示科学计数法数值
  • %E      显示科学计数法数值
  • %f       显示为浮点数
  • %g       以科学计数法或浮点形式显示数值
  • %G      以科学计数法或浮点形式显示数值
  • %s       显示字符串
  • %u      无符号整数
  • %%     显示%自身

awk -F: '{printf"%s",$1}' /etc/passwd

第九周作业

修饰符

  1. /#[.#]:第一个数字控制显示的宽度;第二个#表示小数点后精度,%3.1f
  2. -: 左对齐(默认右对齐)%-15s
  3. +:显示数值的正负符号%+d

awk -F: '{printf "%-20s %10d\n",$1,$3}' /etc/passwd

第九周作业

awk -F: '{printf "Username:%-15s,UID:%d\n",$1,$3}' /etc/passwd

第九周作业


原创文章,作者:Az2h1丶,如若转载,请注明出处:http://www.178linux.com/81522

(0)
Az2h1丶Az2h1丶
上一篇 2017-07-16 21:45
下一篇 2017-07-16 22:09

相关推荐

  • 磁盘管理

    1、拿到一块硬盘,通常来讲,第一步是分区,然后是文件系统的创建,管理文件系统,第三步是挂载设备。 2、linux(准确的说是UNIX)哲学,whindows一切皆窗口,一切皆图形。 3、磁盘是一个硬件设备,存放在/dev/目录下,会有相应的文件来对应的表示这些设备文件,在这个目录下存放的全是设备。 4、在/dev目录下和设备相关的有两种,一种是c开头为字符,…

    Linux干货 2017-04-22
  • keepalived+nginx

    keepalived可以认为是VRRP协议在Linux上的实现,主要有三个模块,分别是core、check和vrrp。core模块为keepalived的核心,负责主进程的启动、维护以及全局配置文件的加载和解析。check负责健康检查,包括常见的各种检查方式。vrrp模块是来实现VRRP协议的。本文基于如下的拓扑图: 配置keepalived+nginx的方…

    Linux干货 2016-11-04
  • GRUB启动故障排除和内核编译

    如何进入光盘应急系统(以下修复操作仅适用于GRUB legacy, 不适用于GRUB2): 步骤一:给主机挂上安装光盘, 或者有相应启动镜像的硬盘分区(可移动的分区) 步骤二:开机时选择CDROM先启动 步骤三:进入光盘启动界面选择应急救援模式 步骤四: 不选择设置网络接口, 直接读取磁盘分区并以读写方式挂载 步骤五: 选择shell进入bash中对磁盘进行…

    Linux干货 2016-09-12
  • N25–第十二周作业

    1、  请描述一次完整的http请求处理过程; (1)建立和处理连接:接收请求或者拒绝请求; (2)接收请求:接收来自于网络上的主机请求报文中对某特定的资源的一次请求的过程; (3)处理请求:对请求报文进行解析,获取客户端请求的资源及请求方法等相关信息 (4)访问资源:获取请求报文中请求的资源 (5)构建响应报文; (6)发送响应报文; (7)记录…

    2017-03-28
  • Linux基础入门命令

    在经过一个星期的入门学习后,对于LINUX的认识也从陌生到了基本了解。总结了一下一周所学习的基本命令。 一、想要查看你当前所在的终端?看下面几条命令: 查看当前登陆的终端名:tty 、whoami ;   查看当前登陆的终端名的详细信息:who am i ; 查看当前所有登陆的终端的详细信息: w ; 二、SHELL 的相关用法 &nbs…

    2017-07-14
  • 博客开始的地方

    来北京挺长时间了,一直都在瞎忙,特别想找个地逛逛,约朋友一起去,结果人家只喜欢吃饭,逛街,来北京瞎逛过两次,第一次是面试路过潘家园,然后进去逛了半天,看各种各样的老古董,当然最多的还是手串,那种核桃,当然还是看到了好多好多有意思的东西,比如下面的小和尚和老和尚,小和尚光着头感觉特别可爱,老和尚还卖萌, 当然还有下面这个关老爷,他的肚子为什么被雕刻的那么大,难…

    2018-03-26