IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> Linux awk命令 介绍与学习心得 -> 正文阅读

[系统运维]Linux awk命令 介绍与学习心得

一.awk是什么?

awk 是一门模式扫描和处理的语言—》专门使用awk进行文本的截取的工具

gawk - pattern scanning and processing language

在我看来,awk也是一门独立的语言,它既可以支持正则也可以支持流控(if…else)。它属于文本处理三剑客之一。(grep、sed、awk)

二.awk命令的简要处理过程

  1. 存在一个文件 使用awk命令打开之后
  2. awk逐行读取文件数据进行处理
  3. Awk 默认以空白为分隔符 将文件的每一行都进行分段处理
  4. 储存数据从$1 到 $?,$0为整行。

在这里插入图片描述

三. awk的完整语法

awk ‘BEGIN{commands}pattern{commands}END{commands}’ filename
在这里插入图片描述
在这里插入图片描述

例如:

[root@firewall ~]# awk -F: 'BEGIN{print "####start####"}/bash/{print $1,$3} END{print "####end####"}' /etc/passwd
####start####
root 0
sanchuang 1000
cali 1001
####end####

四.awk命令的基本语法

awk -F 分隔符 ‘/模式/{动作}’ 输入文件
在这里插入图片描述
^ 放在 [ ]外面 就是开头
放在 [ ]里面就是取反
例子:

[root@firewall ~]# cat /etc/passwd|awk -F: '/^[abc]/{print $1,$3}'
bin 1
adm 3
chrony 998
cali 1001

[root@firewall ~]# cat /etc/passwd|awk -F: '/^[^abc]/{print $1,$3}'
root 0
daemon 2
lp 4
sync 5
shutdown 6
.......

五.awk的命令操作符

在这里插入图片描述
例子:
精确匹配:

[root@firewall ~]# cat /etc/passwd|awk -F: '$3==0{print $1,$3}'
root 0

模糊匹配:

[root@firewall ~]# cat /etc/passwd|awk -F: '$1 ~ /x/{print $1,$3}'
postfix 89
nginx 996

单词的界定符:
awk和grep:

  1. <feng 单词以feng开头
  2. feng> 单词以feng结尾
  3. <feng> 就是一个单词feng

grep:

  1. \b feng 单词以feng开头
  2. feng\b 单词以feng结尾
  3. \b feng \b 就是一个单词feng

六.awk的内置变量

  • FS (field separater 分隔符)
  • OFS (output field separate 输出分隔符)
  • NR (number of row)
  • NF (number of field)

例子:

 [root@firewall ~]# awk -F: '{print $1,NR}' /etc/passwd
root 1
bin 2
....
[root@firewall ~]# awk -F: '{print $1,NR,$NF,NF}' /etc/passwd
root 1 /bin/bash 7
bin 2 /sbin/nologin 7

七.awk如何引用shell变量

1.管道| + awk -v 重新赋值一个变量

例子:

[root@firewall ~]#name=xyy
[root@firewall ~]# echo | awk -v new_name=$name '{print new_name}'
xyy

2.使用双引号和$符号直接引用

例子:

[root@firewall lianxi]# sg=xyy
[root@firewall lianxi]# awk -F: "/^$sg/{print \$0}" /etc/passwd
xyy:x:1003:1004::/home/xyy:/bin/bash

注意:花括号{}里的$符号需要用反斜杠\转义

八.数字求和

[root@firewall ~]# cat a.txt 
1
2
3
4
5
6
7
8
9
10
[root@firewall ~]# awk  'BEGIN{i=0} { i=i+$0}END{print i}' a.txt
55

九.awk命令的部分函数

length()

显示用户名长度在5到10之间的用户,并且使用shell为bash,uid大于500.

[root@firewall ~]# cat /etc/passwd|awk -F: 'length($1)>=5&&length($1)<=10&&$NF~/bash/&&$3>500{print $1}'
sanchuang
sc_xyy

流程控制:
在这里插入图片描述

[root@firewall ~]# awk -F: '{if($3>500)print $1,$3;else print $0}' /etc/passwd

数组用法:

[root@firewall ~]# cat /etc/passwd | awk -F: '{a[$3]=$1}END{for (i in a)print a[i];print length(a)}'
rr
lp
....
adm
30


感谢各位看官!!!

在这里插入图片描述

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-03-12 18:00:11  更:2022-03-12 18:01:17 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 1:17:12-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码