文本三剑客——awk

文本编辑器awk

  • 一、 awk工作原理
    • 1.命令格式
    • 2.awk常见的内建变量(可直接用)如下所示
  • 二、awk的基础用法
    • 1.输出文件中的某一列
    • 2.根据特定条件筛选数据
    • 3.按照分隔符进行切割
    • 4.在匹配到特定字符串时执行操作
    • 5.BEGIN打印模式
    • 6.awk的分隔符用法
  • 三、示例演示
    • 1.获取本机上一次开机时间
    • 2.检测本机cpu 15分钟内的平均负载
    • 3.获取本机IP地址
    • 4.ssh远程登录

一、 awk工作原理

工作原理
逐行读取文本,默认以空格或tab键为分隔符进行分隔,将分隔所得的各个字段保存到内建变量中,并按模式或者条件执行编辑命令
sed命令常用于一整行的处理,而awk比较倾向于将一行分成多个“字段”然后再进行处理。awk信息的读入也是逐行读取的,执行结果可以通过print的功能将字段数据打印显示。在使用awk命令的过程中,可以使用逻辑操作符“&&”表示“与”、“||”表示“或”、“!”表示“非”;还可以进行简单的数学运算,如+、-、*、/、%、^分别表示加、减、乘、除、取余和乘方。

1.命令格式

awk 选项 ‘模式或条件 { 操作 }’ 文件1 文件2 ...... 
awk -f   脚本文件  文件1  文件2 ......

2.awk常见的内建变量(可直接用)如下所示

FS:列分隔符。指定每行文本的字段分隔符,默认为空格或制表符。与“-F”作用相同
NF:当前处理的行的字段个数
NR:当前处理的行的行号(序数)
$0:当前处理的行的整行内容
$n:当前处理行的第n个文件名
FILENAME:被处理的文件名。
RS:行分隔符。awk从文件上读取资料时,将根据RS的定义把资料切割成许多条记录,而awk一次仅读入一条记录,而进行处理。预设值是’\n‘


## 3.按行输出文本,一些示例:

```cpp
awk '(print)'  文件名               #输出所有内容
awk '(print $0)'  文件名            #输出所有内容
 
awk 'NR==1,NR==3{print}' 文件名      #输出第1~3行内容
awk '(NR>=1)&&(NR<=3){print}' 文件名 #输出第1~3行内容

awk 'NR==1||NR==3{print}'  文件名     #输出第1行、第3行内容

awk '(NR%2)==1{print}'  文件名        #输出所有奇数行的内容
awk '(NR%2)==0{print}'  文件名        #输出所有偶数行的内容

awk '/^root/{print}' /etc/passwd     #输出以root开头的行

awk '/nologin$/(print)' /etc/passwd  #输出以nologin结尾的行

awk 'BEGIN{x=0};/\bin\/bash$/{x++};END{print x}' /etc/passwd   #统计以/bin/bash结尾的行数,等同于 grep -c "/bin/bash$"

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

二、awk的基础用法

1.输出文件中的某一列

格式:awk ‘{print $n}’ 文件

文本三剑客——awk_第1张图片

2.根据特定条件筛选数据

格式:awk ‘条件 {print}’ 文件

文本三剑客——awk_第2张图片
文本三剑客——awk_第3张图片

3.按照分隔符进行切割

文本三剑客——awk_第4张图片

4.在匹配到特定字符串时执行操作

格式:awk ‘/匹配条件/ {print}’ 文件

文本三剑客——awk_第5张图片

5.BEGIN打印模式

语法格式:awk ‘BEGIN{…};{…};END{…}’ 文件

文本三剑客——awk_第6张图片

6.awk的分隔符用法

文本三剑客——awk_第7张图片

三、示例演示

1.获取本机上一次开机时间

date -d “$(awk -F “.” ‘{print $1}’ /proc/uptime) second ago” +“%F %H:%M:%S”
在这里插入图片描述

2.检测本机cpu 15分钟内的平均负载

uptime | awk ‘{print $NF}’
在这里插入图片描述

3.获取本机IP地址

ifconfig ens33|awk ‘/inet /{print $2}’
在这里插入图片描述

4.ssh远程登录

文本三剑客——awk_第8张图片

你可能感兴趣的:(数学建模,linux,数据结构)