Linux文本三剑客---awk

这篇具有很好参考价值的文章主要介绍了Linux文本三剑客---awk。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

AWK是什么

Linux文本三剑客之一(grep,sed,awk),功能最强大的文本工具。

逐行读取输入的文本内容,默认以空格和tab键作为分隔符。但是多个空格或者tab键的空格,会自动压缩成一个,然后按照指定的模式和条件执行编辑命令

可以在免交互的情况下,实现复杂的文本操作。完成自动化配置。

awk格式

awk '操作符 action' file

操作符:想干啥

action:怎么做

file:处理对象 

例如:

awk 'BEGIN{x=1};{x++};END{处理动作}' 文件名

awk '操作符 {处理动作}' 文件名

{}外部表示定义条件

{}内指定操作

BEGIN对条件做初始化操作

for ((i=1;i<=10;i++))

awk常用选项

-F:指定分隔符,如果是空格,tab键,可以不加

-v:变量赋值,awk无法从外部获取变量

awk的内置变量:

NR:需要处理行号

FS:列分隔符 和F作用一致,如果用FS,则  FS=":"

OFS:输出内容的列分隔符

NF:表示最后一个字段

$n:内置变量

awk '{print NR}' /etc/passwd

显示行号

awk '{print NR $0}' /etc/passwd

显示行号和内容

awk 'NR==3,NR==5{print}' /etc/passwd

第三行和第五行

awk 'NR==3;NR==5{print}' /etc/passwd

第三行到第五行

awk '(NR>=3)&&(NR<=5){print}' test.txt

第三行到第五行

awk 'NR%2==0{print}' test.txt

打印偶数行

awk 'NR%2==1{print}' test.txt

打印奇数行

awk的运算--求幂运算

[root@hj ~]# awk 'BEGIN{print 2^3}'

8

[root@hj ~]# awk 'BEGIN{print 2**3}'

8

awk按行取列(最重要)

awk -F: '{print $2,$NF}' /etc/passwd

大写的NF为最后一列

$x:第几列

Linux文本三剑客---awk,linux,运维,服务器

表示打印第二列和最后一列

AWK的精确筛选

$n (> < ==);进行数值对比

$n~"字符串" 代表这个字段包含某个字符串

$n!~"字符串" 代表这个字段不包含某个字符串

$n=="字符串" 代表这个字段要和字符串相同

$n!="字符串" 取反,不为某个字段

$NF:代表最后一个字段

下面举几个例子方便大家理解:


1./etc/passwd 输出最后一个字段中包含bash所在行的第一个字段和最后一个字

awk -F: '$NF~"bash" {print $1,$NF}' /etc/passwd

Linux文本三剑客---awk,linux,运维,服务器

2./etc/passwd 只有第一列是root的行,才打印他的第六行

awk -F: '$1=="root" {print $6}' /etc/passwd

Linux文本三剑客---awk,linux,运维,服务器

3.输出最后一个字段,不包含bash,打印第一列和第六列

awk -F: '$NF~"bash" {print $1,$6}' /etc/passwd

Linux文本三剑客---awk,linux,运维,服务器

需要注意:

~:是包含的意思

==:为“是”的意思

二者有很大区别

4.指定第6个字段为/home/hj 而且最后一个字段为/bin/bash 满足条件的输出第一列和最后一列

awk -F: '($6=="/home/hj")&&($NF=="/bin/bash") {print $1.$NF}' /etc/passwd

Linux文本三剑客---awk,linux,运维,服务器

条件判断打印

结合if语句使用

if $3>500 打印所有

Linux文本三剑客---awk,linux,运维,服务器

AWK三元表达式

awk三元表达式继承了java,格式和Java也一样

awk '{条件表达式1 ? A表达式或者值:B表达式或者值}' 文件名

awk -F: '{max=($3>=$4)?$3:$4;{print max $0}}' /etc/passwd

?:

if else

if [ $3>=$4 ]

then

echo $3

else

echo $4

fi

文本内容匹配打印

打印/etc/passwd中以root开头的行

awk '/^root/{print}' /etc/passwd

Linux文本三剑客---awk,linux,运维,服务器

getline函数:getline和管道符以及重定向符号在一块的时候,才有特殊功效

重定向:<> 把其中一个文件的内容传给另外一个

| :输出指定内容,先到定义的变量,再由getline调用变量当中的内容,最后打印出结果。

getline函数运行之后,会改变awk的内置变量,读取的行数也会发生变化,getline在前,就是第一行跳过,打印第二行

getline在后,从第一行开始,跳过第二行,打印的就是奇数

Linux文本三剑客---awk,linux,运维,服务器

-v给变量赋值

BEGIN模式

对变量初始化。需要初始化变量的时候才会使用

格式

awk 'BEGIN{x=1};{x++};{print x}' test.txt

对行数计算Linux文本三剑客---awk,linux,运维,服务器

awk和数组结合使用

awk中如何定义数组

Linux文本三剑客---awk,linux,运维,服务器Linux文本三剑客---awk,linux,运维,服务器

原理:索引的下标是唯一的

a是遍历了所有数组,把结果赋值给i,i在下面继续

本章结束,

下面有几个实例可供参考:

1.日志分割:

Linux文本三剑客---awk,linux,运维,服务器

2.

free 内存监控

df -h 磁盘监控

top 动态进程监控

top -b -n 1静态

监控内存的百分比(不超过90%,超过警报),磁盘(不超过80%),进程(75%),写成函数库,以定时任务的方式每天早上十点整执行,

函数库调用实现Linux文本三剑客---awk,linux,运维,服务器

Linux文本三剑客---awk,linux,运维,服务器

Linux文本三剑客---awk,linux,运维,服务器文章来源地址https://www.toymoban.com/news/detail-728630.html

到了这里,关于Linux文本三剑客---awk的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Linux 文本处理三剑客:grep、sed 和 awk

    awk、grep、sed是linux操作文本的三大利器,合称文本三剑客,也是必须掌握的linux命令之一。三者的功能都是处理文本,但侧重点各不相同,其中属awk功能最强大,但也最复杂。grep更适合单纯的查找或匹配文本,sed更适合编辑匹配到的文本,awk更适合格式化文本,对文本进行较

    2024年01月17日
    浏览(40)
  • Linux:管道命令与文本处理三剑客(grep、sed、awk)

    众所周知,bash命令执行的时候会输出信息,但有时这些信息必须要经过几次处理之后才能得到我们想要的格式,此时应该如何处置?这就牵涉到 管道命令(pipe) 了。管道命令使用的是 | 这个界定符号。另外,管道命令与连续执行命令是不一样的,这点下面我们会说明。 我们先

    2023年04月18日
    浏览(31)
  • Linux 三剑客命令之 awk 详解

    目录 一、Awk 实战讲解 1.1 awk 的原理 1.2 BEGIN 和 END 模块 1.3 运算符 1.4 常用 awk 内置变量 1.5 awk 正则 1.6 awk 常用字符串函数         awk 是一种很棒的语言,它适合文本处理和报表生成,其语法较为常见,借鉴了某些语言的一些精华,如 C 语言等。在 linux 系统日常处理工作中

    2024年02月03日
    浏览(45)
  • 文本三剑客之 awk

    Linux/UNIX 系统中,awk 是一个功能强大的编辑工具。逐行读取输入文本 以空格作为分割符,多个空格他会自动压缩成一个空格 AWK信息的读入也是逐行指定的匹配模式进行查找,对符合条件的内容进行格式化输出或者过滤处理. 1按照命令找指定的行  2.找到的行 打印,操作 awk

    2024年02月08日
    浏览(29)
  • linux命令三剑客grep、sed、awk

    准备 grep、sed、awk号称\\\"linux三剑客\\\",使用频繁,功能强大,本文通过一个实例演示下基本用法。首先准备一个文本文件,命名为text.txt,写入文件内容: grep 首先,最简单的是grep。经常用来过滤查看日志。对于grep需要知道如下几个常用的命令选项: -n: 额外输出行号。例如过

    2024年02月05日
    浏览(58)
  • Linux中字符处理三剑客(grep sed awk )

    在 Linux 系统中,字符处理流程可以利用三个常用的工具来完成,三剑客的具体说明如下: grep:grep 是一种强大的文本搜索工具,可以搜索文件内容中包含指定文本的行,并打印出包含该文本的行。grep 命令通常用于搜索日志文件、配置文件等。 在Linux中,\\\"grep\\\"是一种文本搜索

    2024年02月08日
    浏览(32)
  • Linux三剑客grep、sed、awk(包括练习题)

    Linux grep (global regular expression) 命令用于查找文件里符合条件的字符串或正则表达式。 基本用法与常见的正则表达式 扩展正则表达式实践 此处使用grep -E 进行实践扩展正则,egrep官网已经弃用 注意:sed和awk使用单引号,双引号有特殊解释 sed是Stream Editor(字符流编辑器)的缩写

    2024年02月11日
    浏览(28)
  • Shell脚本攻略:文本三剑客之awk

    目录 一、理论 1.awk原理 2.awk打印  3.awk条件判断 4.awk数组与循环 5.awk函数 6.常用命令 二、实验 1.统计磁盘可用容量 2.统计/etc下文件总大小 3.CPU使用率 4.统计内存 5.监控硬盘 (1)概念 awk由 Aho,Weinberger 和 Kernighan 创建的文本模式扫描和处理语言。 awk非常复杂,所以这不是一

    2024年02月08日
    浏览(36)
  • Linux三剑客(awk、sed、grep) 和 正则表达式

    本文章适用于一定工作经验(熟悉Linux基础)的同行,欢迎各位大佬批判指正。 上手三剑客(grep,sed,awk)之前,需要熟悉正则表达式, 正则表达式 ——事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的

    2024年02月15日
    浏览(40)
  • linux文本三剑客

    过滤/查找 参数 用法 作用 -i grep -i STRING xxx.txt 从xxx.txt文件查找不区分大小写STRING -w grep -w STRING xxx.txt 精确匹配STRING -e grep -e STRING1 -e STRING2 xxx.txt 查找多个STRING行 -n grep -n STRING xxx.txt 查看STRING 在第几行 -v grep -v STRING xxx.txt 输出不包含STRING的行 -r grep -r STRING DIR/ 查找DIR目录下哪

    2024年02月11日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包