Shell脚本中awk命令介绍

目录

一.awk详解

1.1 awk的概述

1.2 awk处理文本方式

1.3 awk的工作原理

 1.4 awk语法

二.awk常见的内建变量(可以直接使用)

2.1 $0当前处理的行的整行内容

 2.2 NR处理指定行的内容

2.2.1 使用数字处理内容

 2.2.2 使用字符串处理行的内容

 2.2.3 打印行号

 2.3 $n当前处理行的第n个字段

 2.4 FS(-F)列分隔符,指定每行文本的字段分隔符

2.5 OFS输出内容的列分隔符

​2.6 NF当前处理的行的字段个数

 2.7 RS行分隔符

 三.awk实例

 四.date命令


一.awk详解

1.1 awk的概述

  • awk是一种编程语言,用于在linux/unix下对文本和数据进行处理。
  • 数据可以来自标准输入、一个或多个文件,或其他命令的输出。
  • 它支持用户自定义函数和动态正则表达式等先进功能。

1.2 awk处理文本方式

1.  awk的处理文本和数据的方式是这样的,
2.  它逐行扫描文件,从第一行到最后一行,
3.  寻找匹配的特定模式的行,并在这些行上进行你想要的操作。
4.  如果没有指定处理动作,则把匹配的行显示到标准输出(屏幕)。
5.  awk分别代表其作者姓氏的第一个字母,因为他的作者是三个人,分别是Alfred Aho、Peter             Weinberger、Kernighan


1.3 awk的工作原理

1. awk使用一行作为输入,并在这一行赋给内部变量$0,每一行也可称为一个记录,以换行符结束
2. 然后,行被:(默认为空格或制表符)分解成字段(或域),每个字段存储在已编号的变量            中,从$1开始 最多达100个字段
3.  awk输出之后,将从文件中获取另一行,并将其存储在$0中,覆盖原来的内容,然后将新的字         符串分隔成字段并进行处理,该过程将持续到所有行处理完毕
4. 一行被称为记录,一个词称为字段

 1.4 awk语法

  • 选项:例如 -F 定义输入字段分隔符,默认的分隔符是空格或制表符(tab)
  • 命令(时空):过去 现在 将来
  • BEGIN{}:begin发生在行处理前(注意大写)
  • { } :行处理时,读一次执行一次
  • END{}:=行处理之后

二.awk常见的内建变量(可以直接使用)

 

2.1 $0当前处理的行的整行内容

 2.2 NR处理指定行的内容

2.2.1 使用数字处理内容

 2.2.2 使用字符串处理行的内容

 2.2.3 打印行号

 使用BEGIN输出包含指定字符的行并统计有多少行

BEGIN模式表示,在处理指定的文本之前,需要先执行BEGIN模式中指定的动作;
awk再处理指定的文本,之后再执行END模式中指定的动作;
END{ } 语句块中,往往会放入打印结果等语句。

 2.3 $n当前处理行的第n个字段

 示例:

 2.4 FS(-F)列分隔符,指定每行文本的字段分隔符

 

 与! 一起使用

 与if语句或者while或三目运算符等一起使用时需要在嵌套一个大括号{ }

 

 三元运算符

2.5 OFS输出内容的列分隔符

将空格换为“|”

 2.6 NF当前处理的行的字段个数

打印第一个字段与最后一个字段

 2.7 RS行分隔符

 三.awk实例:

查看内存使用  

 查看cpu空闲率

top -b -n 1 只会输出一次top的结果不会进行刷新

通过脚本分析/var/log/secure查看哪些主机在暴力破解本服务,如果统计出密码验证失败超过三次就把IP加入到黑名单中/etc/hosts deny

 

 四.date命令

 以数字形式输出

  以年月日的形式输出

 输出当月的第一天

 输出下一个月的第一天 

 输出本月的最后一天 

 输出上个月的倒数第3天

 

  输出服务器重启时间

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
awk命令是一种用于处理文本文件的强大工具,常用于 shell 脚本。它可以根据指定的规则对文本进行分割、格式化和提取等操作。下面我将为您解释一些常见的使用示例和处理规则。 示例1:使用awk命令将一个文件的整数部分提取出来,存到另外一个文件。假设我们有一个名为input.txt的文件,其包含了一些数字,我们想要提取出这些数字的整数部分并存储到output.txt文件。可以使用以下命令实现: ```shell awk '{print int($0)}' input.txt > output.txt ``` 这个命令会逐行读取input.txt文件的内容,将每一行的数字取整后输出到output.txt文件。 示例2:提取passwd文件的用户名和UID。假设我们有一个名为passwd的文件,其包含了系统用户的信息。我们想要提取出用户名和对应的UID。可以使用以下命令实现: ```shell awk -F: '{print $1, $3}' passwd ``` 这个命令使用冒号作为字段分隔符(-F:),然后打印出每一行的第一个字段(用户名)和第三个字段(UID)。 处理规则: - awk命令的处理规则通常由花括号{}包围,可以在其使用各种条件和操作。 - 可以使用条件语句(if、else)和循环语句(for、while)对文本进行处理。 - 可以使用内置的函数和运算符进行数学计算、字符串处理等操作。 - 可以使用特殊变量(例如$0表示整行文本,$1表示第一个字段)引用文本的内容。 总之,awk命令是一种非常强大和灵活的文本处理工具,可以在shell脚本广泛应用。它提供了丰富的功能和语法,可以根据具体需求对文本进行各种操作和提取。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [写脚本必用命令——awk命令的讲解](https://blog.csdn.net/m0_54355780/article/details/122479439)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值