awk

1、定义

awk:按行取列

awk的默认分隔符:空格,tab键,有多个空格自动压缩成一个

2、awk的工作原理

根据指定信息逐行的读取文本内容,然后按照条件进行格式化输出

3、awk的选项

-F:指定分割符,默认是空格

-v:变量复制

4、内置变量

$#:按行需要取出的第几个字段

$0:打印所有,展示所有的文本内容(默认)

NR:需要处理的行号

NF:处理行的字段个数,$NF:当前行的最后一个字段

FS:FS和F都是指定分隔符,FS=","

OFS:指定输出内容的分隔符

RS:行分隔符,可以根据RS的设置把文件内容切割成多个记录,也可以改变行的分隔符,默认是\n,回车,换行

5、命令格式

awk -F '操作符 {动作}' 处理对象

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

动作:默认是打印

打印行号:

awk '{print NR}' 文件

打印行号和内容:

awk '{print NR,$0}' 文件

打印指定行:

awk 'NR==3{print}' 文件

打印第3行到第5行:

awk 'NR==3,NR==5{print}' 文件

打印第3行和第5行:

awk 'NR==3;NR==5{print}' 文件

打印偶数行:

awk 'NR%2==0{print}' 文件

打印奇数行:

awk 'NR%2==1{print}' 文件

指定分隔符:

awk -F分隔符 'print $第几字段' 文件

6、awk怎么使用文本过滤

过滤包含root的行:

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

7、BEGIN打印模式

awk 'BEGIN{...};{...};END{...}' 文件

BEGIN{...}预先的条件,指定awk命令前的初始化操作

{...}处理条件,如何对初始值进行操作

END{...}处理完之后的操作,一般都是打印

awk 'BEGIN{x=1};{x++};END{print x}' 文件

取幂运算:

awk 'BEGIN{print 2**3}' ​

awk 'BEGIN{print 2^3}'

-v进行赋值:

read -p "输入一个数: " a

read -p "输入次方:" b

num=$(awk -v a="$a" -v b="$b" 'BEGIN{print a^b}')

echo $num

8、awk的条件判断打印

打印第三列所有大于999的

awk -F: '$3>999{print $0}' /etc/apsswd

取反

awk -F: '!($3>999){print $0}'

打印第3行等于999

awk -F: '$3==999{print $0}'

9、awk的三元表达式

if

else语句

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

num=($3>$4)?$3:$4;

? if

:else

; fi

10、awk的精确筛选

$n(><==) 用于比较数值之间的大小

$n~"字符串" :表示该字段包含某个字符串

$n!~"字符串“ :该字段不包含某个字符串

$n=="字符串" :该字段等于这个字符串

$n!="字符串" :该字段不等于这个字符串

打印第七列包含bash这个字段的行,取的是行的第一列和最后一列,以:作为分隔符

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

打印第七列包含bash这个字段的行,取的是行的第一列到第三列,以:作为分隔符

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

打印第七列不包含bash这个字段的行,取的是行的第一列到第三列,以:作为分隔符

awk -F: '$7!~"bash" {print $1,$2,$3}' /etc/passwd

打印第七列等于/bin/bash这个字段的行,取第一列和第二列

awk -F: '$7=="/bin/bash" {print $1,$2}' /etc/passwd

11、逻辑关系

打印第三行的第三列

cat awk.sh | awk 'NR==3{print $3}'/10

打印/etc/passwd第一列=dn,第七列=/bin/bash

awk -F: '($1=="dn")&&($NF=="/bin/bash") {print $1,$NF}' /etc/passwd

12.1作用

是一个功能强大的命令

作用:获取和发送数据

curl www.baidu.com

curl 192.168.230.20

12.2获取网页内容并输出

-O:下载文件到本地

-o:将文件下载到指定的路径

-x:发送post请求

-i:可以获取web软件的版本(服务端没有隐藏版本号)

13、awk的运算

num=$(awk 'BEGIN{print 1.243+4.932}')

取小数点后两位(四舍五入)

num=$(awk 'BEGIN{printf "%.2f", 1.243*4.932}')

只取整数

num=$(awk 'BEGIN{printf "%.F", 1.243*4.932}')

练习1:使用awk,将主机名取出来

[root@localhost opt]# cat test2.txt

1 www.kgc.com

2 mail.kgc.com

3 ftp.kgc.com

4 linux.kgc.com

5 blog.kgc.co

[root@localhost opt]# cat test2.txt | awk -F'[ .]+' '{print $2}'

www

mail

ftp

linux

blog

练习2:使用awk,统计/etc下文件的总大小

ll /etc | awk '/^-/{print sum+=$5} END{print "文件的总大小:"sum/1024"M"}'

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/34670.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SQL Server - ROLLUP、GROUPING、CUBE、GROUPING SET

文章目录 SQL Server - ROLLUP、GROUPING、CUBE、GROUPING SETROLLUP函数GROUPING函数GROUPING SET函数CUBE函数网上例子 写在前面&#xff1a;如果我们想要对分组之后的数据进行类似小计的计算&#xff0c;那么就需要使用到下面的函数 SQL Server - ROLLUP、GROUPING、CUBE、G…

EMANE版本的编译问题

EMANE最新版本编译问题 在Ubuntu 18.04上编译EMANE最新版本 在ubuntu 18.04上使用make deb编译EMANE1.5.1时&#xff0c;会卡在如下地方&#xff1a; make[6]: Entering directory ‘/home/xxx/emane-1.5.1/.debbuild/emane-1.5.1’ /bin/bash /home/xxx/emane-1.5.1/.debbui…

YOLOv10剪枝|模型轻量化实现方案 - 模型剪枝手把手教学

📚 专栏地址:《YOLOv10算法改进实战》 👉 独家改进,对现有YOLOv10进行二次创新,提升检测精度,适合科研创新度十足,强烈推荐 🌟 统一使用 YOLOv10 代码框架,结合不同模块来构建不同的YOLO目标检测模型。 💥 本博客包含大量的改进方式,降低改进难度,改进点包含【B…

互联网IT公司网站选择科技蓝,从来没让人失望过。

选择科技蓝色作为IT官网的主题颜色有以下好处&#xff1a; 专业感&#xff1a;科技蓝色通常与科技、创新和专业相关联&#xff0c;使用科技蓝色可以给访问者一种专业、可靠的印象&#xff0c;增强品牌形象&#xff0c;特别适合IT行业。技术感&#xff1a;科技蓝色给人一种科技…

微信小程序笔记 七!

页面配置 1. 页面配置文件的作用 小程序中&#xff0c;每个页面都有自己的 .json 配置文件&#xff0c;用来对当前页面的窗口外观、页面效果等进行配置。 2. 页面配置和全局配置的关系 小程序中&#xff0c;app.json 中的 window 节点&#xff0c;可以全局配置小程序中每个…

智心顾问:为心智障碍家庭带来温暖与专业支持

&#x1f499;关爱从心开始 —— 理解心智障碍 在这个世界上&#xff0c;有这样一群特殊的群体——心智障碍者。他们通常伴随着个体认知、社会互动和学习能力的障碍。这些障碍可能源于遗传、环境或未知因素&#xff0c;但不应成为他们照护者获得信息和支持的阻碍。心智障碍者的…

「ClickHouse 极简教程」分布式下的 IN/JOIN 及 GLOBAL关键字

百度安全验证https://baijiahao.baidu.com/s?id1712073808973941124&wfrspider&forpc

C++结构体内存对齐规则

背景介绍 最近在使用Java语言写一个Java客户端&#xff0c;对接一个C/C语言编写的Server时&#xff0c;采用TCP协议进行通信&#xff0c;在将C结构体序列化的输出流转换为Java结构体时&#xff0c;需要按照结构体每个字段对应的字节长度截取字节流转换为Java类型&#xff0c;遇…

19 Shell编程之条件语句

目录 19.1 条件测试操作 19.1.1 文件测试 19.1.1 整数值比较 19.1.3 字符串比较 19.1.4 逻辑测试 19.2 if条件语句 19.2.1 if语句的结构 19.2.2 if语句应用示例 19.3 case分支语句 19.3.1 case语句的结构 19.3.2 case语句应用示例 19.1 条件测试操作 Shell环境根据命令执行后…

栈与队列 Leetcode 239 滑动窗口最大值

栈与队列 Leetcode 239 滑动窗口最大值 Leetcode 239 要点&#xff1a;1.能想到单调队列&#xff0c;积累技巧&#xff1b; class Solution{ public:class My_Monotonous_Queue{public:deque<int> Mono_queue;// 重写队列pop函数内部实现&#xff0c;移除队列最前方的…

内容安全复习 1 - 信息内容安全概述

文章目录 信息内容安全简介网络空间信息内容安全大模型 人工智能简介 信息内容安全简介 网络空间 网络空间是融合物理域、信息域、认知域和社会域&#xff0c;控制实体行为的信息活动空间。 上图展示了网络空间安全的结构。可以看到将网络空间划分为了网络域和内容域两个部分。…

分布式缓存框架Hazelcast与Java整合详解

引言 在现代的分布式系统中&#xff0c;缓存是提高性能的关键组件之一。Hazelcast作为一个开源的分布式内存数据网格&#xff08;IMDG&#xff09;&#xff0c;提供了分布式缓存、集群和并发数据结构等功能。本文将详细介绍如何在Java应用中整合Hazelcast&#xff0c;并通过代…

Kotlin设计模式:深入解析Facade模式

Kotlin设计模式&#xff1a;深入解析Facade模式 在软件开发中&#xff0c;随着系统复杂度的增加&#xff0c;管理和使用多个相关接口变得越来越困难。这时候&#xff0c;Facade模式&#xff08;外观模式&#xff09;就显得尤为重要。本文将深入探讨Kotlin中的Facade模式&#…

利用LabVIEW和数字孪生技术实现PCB电路板测试

利用LabVIEW和数字孪生技术对PCB电路板进行测试&#xff0c;可以通过动画展示实现测试过程的生动、形象和直观。本文详细说明了如何结合LabVIEW与数字孪生技术进行PCB电路板的测试&#xff0c;包括系统架构、实现方法以及具体展示效果&#xff0c;适合对外展示。 在现代电子制造…

前端项目外包出去,是我痛苦的开始。如何破?

不止一个老铁给我反馈&#xff0c;他们把其前端项目外包出去&#xff0c;非常的痛苦&#xff0c;远不如用自己的员工省心。明面上钱省了&#xff0c;实际精力大量耗费在上面&#xff0c;一算账并没省&#xff0c;反而闹了一肚子气&#xff0c;问我这事该如何破&#xff1f;其实…

Leetcode Hot100之数组

1.最大子数组和 题目描述 给你一个整数数组 nums &#xff0c;请你找出一个具有最大和的连续子数组&#xff08;子数组最少包含一个元素&#xff09;&#xff0c;返回其最大和。 子数组是数组中的一个连续部分。解题思路 动态规划&#xff0c;遍历数组求取以当前元素为结尾的子…

mysql 查询排名,包括并列排名和连续排名

在MySQL中&#xff0c;根据不同的需求&#xff0c;查询排名可以分为并列排名和连续排名两种情况。 以下是分别实现这两种排名的方法&#xff0c;考虑到兼容性&#xff0c;这里会提供适合较早版本MySQL&#xff08;即8.0之前版本&#xff09;的解决方案&#xff0c;同时也提及M…

influxdb内存存储改为硬盘存储

根据直接部署和docker配置寻找到配置文件&#xff0c;添加内容 [data]engine "tsi1"index-version "tsi1" 即可降低内存占用

Java对象List根据ID去重

Java对象List根据ID去重 一、前言1. 使用HashSet去重2. 使用Stream API去重3. 使用HashMap去重4. 使用TreeSet去重并保持顺序5. 使用LinkedHashMap确保插入顺序 一、前言 在Java中处理大数据时&#xff0c;常常会遇到需要去重的情况。假设我们有一个对象数组&#xff0c;其中对…

CloudCompare二次开发目录(C++长期更新版)

目录 一、环境配置二、功能开发 本文由CSDN点云侠原创&#xff0c;原文链接。如果你不是在点云侠的博客中看到该文章&#xff0c;那么此处便是不要脸的爬虫与GPT。 一、环境配置 WIN10系统下VS2019编译CloudCompare2.12.4CloudCompare与PCL数据格式的相互转换 二、功能开发 …