Linux新手生存笔记[4]——重点命令1-awk

本文是Linux新手的生存笔记第四部分,专注于awk命令。内容涵盖了awk的基础知识,包括命令格式、调用方法、域切分、正则匹配、内置变量和函数、格式化输出、数组、条件控制和错误排查等,旨在帮助读者掌握awk在处理文本数据时的强大功能。
摘要由CSDN通过智能技术生成


move to github 点击打开链接


--------------------------------

回到全局目录


------------------------------------------------

目录
简介 1
命令格式&说明 2
调用方法 3
域切分&操作 3
正则匹配 4
内置变量&操作 5
内置函数&操作 6
格式化输出 7
数组 8
条件判断&流程控制 9
与shell交互 10
awk与变量 10
错误排查 11
其他 11

简介

AWK:三位创造者AhoWeinbergerKernighan统称

官方定义:一个优秀的样式扫描与处理工具

定位:AWK是一种用于处理文本的编程语言工具,主要用于格式化报文或从一个大的文本文件中抽取数据提取原来文本中行的某些域进行计算组合显示,出结果

 

【扫描文件中的每一行,查找与命令行中所给定内容相匹配的模式。如果发现匹配内容,则进行下一个编程步骤。如果找不到匹配内容,则继续处理下一行,直到文件末尾

 

[Shell过滤工具中最难掌握的,语法复杂,错误提示不明确]

 

优点:

1.处理文件中的记录(与数据库相比)

2.简单,解释执行,不必编译(与C相比)

3.容易获得,unix自带(whereis awk

模式和动作

模式部分决定了动作语句何时触发及触发的事件【处理语句】

模式部分可省略,则动作对每一行执行;模式部分可以是任何条件语句、复合语句、正则表达式


命令格式及说明

格式:

语法组成:【查找  -à 执行处理】

awk ‘pattern{action}’ filename

【注意,pattern在非括号中,用于查询筛选匹配行,action在括号中,action是在找到匹配内容时所执行的一系列命令,用于对筛选后的内容进行处理】

 

其中action内容可扩充,也可以有多个action
执行顺序:awk一行行读入输入文件,顺序执行‘’内内容,按模式匹配来采取动作。
其他调用:awk可用内部变量和函数,条件与循环语句,也可执行数学运算和字符串操作。此外,可以使用BEGINEND来执行处理前预操作和处理后后继操作。

格式:

awk [ -F re] [parameter...] ['prog'] [-f progfile]

 

参数说明:

-F re

允许awk更改其字段分隔符,默认空格

A-F参数后紧跟单个分隔符,则用双引号“”,例如 –F”+”
B
-F参数后紧跟多个分隔符,则用单引号‘ ’并用[ ],中间顺序无所谓,例如-F’[+$]’

parameter

该参数帮助为不同的变量赋值

'prog'

awk的程序语句段。这个语句段必须用单拓号:''括起,以防被shell解释

-f progfile

允许awk调用并执行progfile指定有程序文件

progfile是一个文本文件,他必须符合awk的语法

in_file

awk的输入文件,awk允许对多个输入文件进行处理。

值得注意的是awk不修改输入文件。

如果未指定输入文件,awk将接受标准输入,并将结果显示在标准输出上。

awk支持输入输出重定向。

BEGIN{….}

{…..}

END{……}

1 位置:’{}

2 作用:BEGINEND的作用是给程序赋予初始状态和在程序结束之后执行一些扫尾的工作

  BEGIN{}awk开始扫描输入之前执行 (显示变量和预置(初始化)变量 )

  END{}:在扫描完全部的输入之后执行 (最终结果 )

  {}:操作

 

BEGIN部分:设置计数和打印头

END部分:打印输出文本总数及结尾状态标识


调用方法

调用方式:

1

命令行;普通UNIX命令 ,用于解决简单的问题

 

2

利用命令解释器调用awk程序;

写入脚本文件,并在首行加入#!/bin/awk –f ,执行之

 

 

3

使用-f选项调用awk程序

所有awk插入一个单独文件然后调用

awk –f awk-script-file input-files

 

域切分及操作

域的切分:

A#B#C#D  

分隔符为#,$1:A  $2:B ……注意,所有域为 $0

print隶属于action,所以一定要放在{}中】

 

awk中,缺省的情况下总是将文本文件中的一行视为一个记录,而将一行中的某一部分作为记录中的一个字段。用$1,$2,$3...这样的方式来顺序地表示行(记录)中的不同字段,$0表示整个行(记录)

示例:

1. 打印所有行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值