awk文本三剑客之一

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

逐行匹配,对符合条件的才会进行格式化输出或者过滤

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

awk 格式

awk '操作符' action  file
        想干啥  这么干  处理对象

awk 'BEGIN{}'文件名
awk '操作符 {处理动作}' 文件名
                      {}外 指定条件
                      {}内 指定操作
                BEGIN对条件做初始化操作

awk '指定条件(处理动作)'
awk 'BEGIN{x=1}{x++}END{处理动作}'
awk 'x{print}' /etc/passwd  x默认1

awk的常用选项

-F 指定分隔符,如是空格,tab键,可以不加
-v 变量赋值,awk这个命令不能从外部获取变量值,只能在内部赋值

{}内置变量

-v awk外变量边传awk内
在awk中打印变量不需要$

NR 需要处理的行号

awk文本三剑客之一_第1张图片

$0 打印内容

awk文本三剑客之一_第2张图片

awk文本三剑客之一_第3张图片

FS: 列分隔符和F做用一致,如果硬FS,FS=":"
OFS: 输出内容的列分隔符
NF;最后一个字段
$n 也属于内置变量

awk文本三剑客之一_第4张图片

BEGIN模式
对变量初始化

awk文本三剑客之一_第5张图片

{}外置变量

打印/etc/passwd 第三行和第五行

awk文本三剑客之一_第6张图片

打印/etc/passwd 第三行到第五行

awk文本三剑客之一_第7张图片

打印/etc/passwd 偶数行

awk文本三剑客之一_第8张图片

打印/etc/passwd 奇数行

awk文本三剑客之一_第9张图片

计算求值(小数求和,整数求和)

基本计算

awk文本三剑客之一_第10张图片

3的三次方  两种方法

 

按行取列

取一个文件按的第二列和第三列

awk文本三剑客之一_第11张图片

取/etc/passwd的第二列和最后一列

NF:表示最后一列。

awk文本三剑客之一_第12张图片

数值对比

$n (><==):进行数值对比
$n~"字符串": 代表这个字段包含某个字符串
$n!~"字符串" 代表这个字段不包含某个字符串
$n=="字符串" 代表这个字段和字符相同。
$n!="字符串" 取反,不为某个字段
$NF 代表最后一个字段

输出最后一个字段中包含bash所在行的第一个字段和最后一个字段

只有第一列是root的行,才打印它的第六列。

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

awk文本三剑客之一_第13张图片

指定第六个字段为/home/dn而且最后一个字段为/bin/bash,满足条件的输出第一列和最后一列。

打印出所有第三列大于500的,然后输出全部内容

awk文本三剑客之一_第14张图片

awk文本三剑客之一_第15张图片

三元表达式

awk的三元表达式: 继承了java格式和java也一样
awk '(条件表达式1?A表达式或值:B表达式或值}' 文件名

awk文本三剑客之一_第16张图片

匹配www位置的内容

awk文本三剑客之一_第17张图片

awk文本三剑客之一_第18张图片

getline函数

getline函数: getline和管道符以及重定向符号在一块的时候

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

awk文本三剑客之一_第19张图片

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

awk文本三剑客之一_第20张图片

| 输出找到内容,打印结果

awk和数组结合使用:

awk中定义数组
awk 'BEGIN{a[0]=10;a[0]=20;print a[0] }'

按照个人能力理解

你可能感兴趣的:(linux,服务器,运维,centos)