Linux篇--awk的使用

Posted L先生AI课堂

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux篇--awk的使用相关的知识,希望对你有一定的参考价值。

一、前述

awk是一个强大的文本分析工具。相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大。
简单来说awk就是把文件逐行的读入,(空格,制表符)为默认分隔符将每行切片,切开的部分再进行各种分析处理。

二、具体

1、基础知识点

awk -F ‘{pattern + action}‘ {filenames}
支持自定义分隔符
支持正则表达式匹配
支持自定义变量,数组  a[1]  a[tom]  map(key)
支持内置变量
ARGC               命令行参数个数
ARGV               命令行参数排列
ENVIRON            支持队列中系统环境变量的使用
FILENAME           awk浏览的文件名
FNR                浏览文件的记录数
FS                 设置输入域分隔符,等价于命令行 -F选项
NF                 浏览记录的域的个数
NR                 已读的记录数
OFS                输出域分隔符
ORS                输出记录分隔符
RS                 控制记录分隔符
支持函数
print、split、substr、sub、gsub
支持流程控制语句,类C语言
if、while、do/while、for、break、continue

$0表示所有域, $1表示第一个域, $n表示第n个域。 默认域分隔符是空格键或tab键。
2、举例

只是显示/etc/passwd的账户:CUT
awk -F‘:‘ ‘{print $1}‘ passwd
只是显示/etc/passwd的账户和账户对应的shell,而账户与shell之间以逗号分割,而且在所有行开始前添加列名name,shell,在最后一行添加"blue,/bin/nosh"(cut,sed)
awk -F‘:‘ ‘BEGIN{print "name,shell"} {print $1 "," $7} END{print "blue,/bin/nosh"}‘ passwd
搜索/etc/passwd有root关键字的所有行
awk  ‘/root/ { print $0}‘   passwd
统计/etc/passwd文件中,每行的行号,每行的列数,对应的完整行内容

xxx     Math English C++  Experiment
Monkey  100   90     95   Good
Cat     80    100    60   Perfect
Dog     90    60     70   Great
Tiger   95    85     90   Fantastic

 

    [email protected] ~/learn_awk  
    $ awk ‘{print $2}‘ test.txt  
    Math  
    100  
    80  
    90  
    95  
      
    [email protected] ~/learn_awk  
    $  

 

 看这篇博客吧 ,讲得很好https://blog.csdn.net/stpeace/article/details/46848873

 




























以上是关于Linux篇--awk的使用的主要内容,如果未能解决你的问题,请参考以下文章

技能篇:awk教程-linux命令

技能篇:awk教程-linux命令

Linux下文本搜索-AWK篇

linux基础篇-文本三剑客之AWK

开发运维手牵手「Linux篇」awk命令用法

linux基础篇07,linux文本处理cat more less head tail sort uniq grep cut jion sed awk