文本三剑客之awk

awk 按行取列
awk默认的分割符:空格,tab键,多个空格自动压缩成一个
awk的工作原理,根据指令信息,逐行读取文本内容,然后按照条件进行1格式化输出
awk的选项:
-F 指定分割符,默认就是空格
-v 变量赋值
内置变量:
$#:#是数字,按行需要取出的第几个字段
0 :打印所有,展示所有的文本内容(默认) N R :需要处理的行号 N F :处理行的字段个数, 0:打印所有,展示所有的文本内容(默认) NR:需要处理的行号 NF:处理行的字段个数, 0:打印所有,展示所有的文本内容(默认)NR:需要处理的行号NF:处理行的字段个数,NF:处理行的最后一个字段
FS:FS和F是一样的,都是指定分隔符FS=“:”
OFS:指定输出内容的分隔符
RS:行分隔符,可以根据RS的设置把文件内容切割成多个记录,也可以改变行的分隔符,默认是\n,回车,换行。
命令格式:
awk -F ‘操作符{动作}’ 处理对象
-F指定分隔符,如果是空格可以不加
动作:默认就是打印

#打印文件内容,默认是所有文件
awk '{print}' 文件
#只打印行号
awk '{print NR}' 文件
#打印行号和内容
awk '{print NR,$0}' 文件
#打印指定行
awk 'NR==行数{print}' 文件
#;打印3和5行
awk 'NR==3,NR==5{print}' 文件
#打印奇偶行
awk 'NR%2==0{print}' 文件
awk 'NR%2==1{print}' 文件
#指定分割符
awk -F: '{print $3}' /etc/passwd
#awk 使用文本过滤
awk '/root/{print}' /etc/passwd
#BEGIN 打印模式
awk 'BEGIN{...};{...};END{...}' 文件
#BEGIN{...} 表示预先条件,指定awk命令前的初始化操作
#{...}处理条件,如何对初始值进行操作
#END{...}处理完之后的操作,一般都是打印
#区幂运算 2的3次方
awk 'BEGIN{print 2**3}'		awk 'BEGIN{print 2^3}'
#-v进行赋值
vim test.sh
read -p "请输入一个数:" num1
read -p "请输入你需要进行的幂运算:" num2
num=$(awk -v num1="$num1" -v num2="$num2" 'BEGIN{print num1^num2}' )
echo $num
awk -v FS=":" -v OFS="==" '{print $1,$3}' /etc/passwd
echo $PATH | awk -v RS=":" '{print $1}'
awk -F: '$3>999{print $0}' /etc/passwd
awk -F: '$3==1000{print $0}' /etc/passwd

awk的三元表达式:

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

awk的精确筛查:

$n(> < ==)用于比较数值
$n~"字符串":该字段包含某个字符串
$n!~"字符串":该字段不包含某个字符串
$n=="字符串":该字段等于这个字符串
$n="字符串":该字段不等于这个字符串
$NF 代表最后一个字段
#打印第七列包含bash这个字段的行,取的是行的第一列和最后一列,以:为分隔符
awk -F: '$7~"bash" {print $1,$NF}' /etc/passwd
awk -F: '$7!~"bash" {print $1,$NF}' /etc/passwd		#取反
awk -F: '$7=="bash" {print $1,$NF}' /etc/passwd		#精确匹配

逻辑关系:

#第一列=dn且第七列=/bin/bash
awk -F: '($1=="dn")&&($NF=="/bin/bash") {print $1,$NF}' /etc/passwd
#逻辑或
awk -F: '($1=="ntp")||($NF=="/bin/bash") {print $1,$NF}' /etc/passwd
#打印文件内容的第一行和第九行
cat /var/log/nginx/access.log | awk '{print $1,$9}'
cat test.sh | awk 'NR>2{print $3}'
cat test.sh | awk 'NR==3{print $3}'
cat test.sh | awk 'NR>=2{print $3}'
cat test.sh | awk 'NR!=1{print $3}'

curl主要作用是发送数据
curl 域名/IP地址 获取网页内容并且输出
-O 下载文件到本地
-o 将文件下载到指定的路径
-x 发生post请求
-i 取web软件的版本(服务端没有隐藏版本号)

#取小数点后几位(四舍五入)
num=$(awk 'BEGIN{printf "%.2f", 2.222+2.222}')
echo $num
#取整数(四舍五入)
num=$(awk 'BEGIN{printf "%.F", 2.222*2.222}')
echo $num
#用awk把主机名取出来
vim test.txt
1 www.kgc.com
2 mail.kgc.com
3 ftp.kgc.com
4 linux.kgc.com
5 blog.kgc.co
cat test.txt | awk -F'[ .]+' '{print $2}'
cat test.txt | awk 
#统计/etc下文件的总大小
ll /etc | awk '/^-/{print sum+=$5}''END{print "文件的总大小是:"sum/1024"M"}'
#1,6,7行磁盘中的容量和
df |grep -v "tmpfs" | grep -v "/dev/sr0" | awk 'NR>1{sum+=$3} END{print "磁盘中的容量是:"sum/1024/1024"G"}'

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

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

相关文章

Git回滚到某次提交

要在Git中回滚到某次提交&#xff0c;你可以使用git reset命令。但是&#xff0c;你需要明确你想要进行的是“软回滚”&#xff08;soft reset&#xff09;&#xff0c;“混合回滚”&#xff08;mixed reset&#xff09;还是“硬回滚”&#xff08;hard reset&#xff09;&…

# Kafka_深入探秘者(4):kafka 主题 topic

Kafka_深入探秘者&#xff08;4&#xff09;&#xff1a;kafka 主题 topic 一、kafka 主题管理 1、kafka 创建主题 topic 命令 1&#xff09;命令&#xff1a; # 切换到 kafka 安装目录 cd /usr/local/kafka/kafka_2.12-2.8.0/# 创建一个名为 heima 的 主题 bin/kafka-topic…

揭秘!速卖通卖家如何靠自养号测评打造爆款?

然而&#xff0c;许多商家对测评的认识存在严重的误区&#xff0c;他们错误地以为仅仅通过几次草率的测评就能快速塑造出爆款产品。实际上&#xff0c;测评远非如此简单&#xff0c;它是一个需要深思熟虑、精心策划和持续投入的过程。测评的真正价值在于帮助平台精准地把握产品…

【C语言课程设计】员工信息管理系统

员工信息管理系统 在日常的企业管理中&#xff0c;员工信息的管理显得尤为重要。为了提高员工信息管理的效率&#xff0c;我们设计并实现了一个简单的员工信息管理系统。该系统主要使用C语言编写&#xff0c;具备输入、显示、查询、更新&#xff08;增加、删除、修改&#xff…

数字排列问题

题目&#xff1a;有1、2、3、4个数字&#xff0c;能组成多少个互不相同且无重复数字的三位数&#xff1f;都是多少&#xff1f; 代码&#xff1a; #include <stdio.h> int main() { int count 0; // 计数器&#xff0c;记录生成的三位数的数量 // 使用三个嵌套的fo…

代数扩张次数关系定理

【单扩域同构引理】 对于单扩张 K / F \mathbb{K/F} K/F有同构 F [ a ] ≅ F [ x ] / ⟨ f ( x ) ⟩ \mathbb{F}\lbrack a\rbrack\mathbb{\cong F}\lbrack x\rbrack/\left\langle f(x) \right\rangle F[a]≅F[x]/⟨f(x)⟩&#xff0c;其中 a ∈ K a \in \mathbb{K} a∈K为本原元…

Java-LinkedList和ArrayList的区别、Get/Add操作性能分析以及常见的遍历方式

LinkedList和ArrayList的区别、Get/Add操作性能分析以及常见的遍历方式 一、LinkedList基本特性主要方法 二、ArrayList初始化及基本操作ArrayList注意点&#xff08;待完善&#xff09;代码示例 三、ArrayList与LinkedList的区别四、Get/Add操作性能分析五、LinkedList遍历方式…

中霖教育:二级建造师报名后缺考有影响吗?

在完成二级建造师的报名程序后&#xff0c;考生无法进行退考。如果是不参加考试&#xff0c;可以选择弃考。弃考对个人并没有负面影响&#xff0c;缺席考试的话也不会被记录在个人诚信档案中。当然&#xff0c;如果弃考的话此次考试的成绩将被记为0&#xff0c;下一年参加考试按…

机器学习项目实战 项目详解 + 数据集 + 完整源码+ 项目报告

前言 本专栏为大家整理了一些机器学习项目&#xff0c;内包含了各种不同的入门级机器学习项目&#xff0c;包含项目的源代码、数据集、以及详细的讲解&#xff0c;每个项目都带有完整的代码数据集报告 项目链接 【机器学习项目实战&#xff08;一&#xff09;】基于随机森林…

关于电机的线性思考

当大多数工程师听到电机这个词时&#xff0c;他们自然地想到旋转装置&#xff0c;例如有刷直流、无刷直流、步进电机或变频原动机。但是电机不一定是旋转的&#xff0c;很多时候设计需要直线运动。一种解决方案是添加某种齿轮或皮带装置来转换旋转运动&#xff0c;这种解决方案…

基于SpringBoot的实习管理系统设计与实现

你好呀&#xff0c;我是计算机学姐码农小野&#xff01;如果有相关需求&#xff0c;可以私信联系我。 开发语言&#xff1a; Java 数据库&#xff1a; MySQL 技术&#xff1a; SpringBoot框架&#xff0c;B/S模式 工具&#xff1a; MyEclipse&#xff0c;Tomcat 系统展示 …

预备役二招算法测试题解

这次题目出的都是一些偏向于基础的题目&#xff0c;就是一些简单的模拟&#xff0c;思维&#xff0c;以及基础算法&#xff08;二分&#xff0c;前缀和&#xff09; &#xff08;点击题目标题&#xff0c;进入原题&#xff09; 我是签到题 题解&#xff1a;就是说给你 t 组数据…

每日鲜语携手中国国家高尔夫球队队员殷若宁征战巴黎,打响中国高端鲜奶品牌“鲜”声量

近日&#xff0c;高端鲜奶品牌每日鲜语宣布携手蒙牛品牌代言人、中国国家高尔夫球队队员殷若宁&#xff0c;共赴巴黎奥运赛场&#xff0c;为梦想挥杆而上。邀请众多消费者开启高品质、健康的生活方式。此举不仅彰显了每日鲜语作为高端鲜奶新标杆的品牌定位&#xff0c;也同时延…

vue2.0项目安装依赖 sass 报错

1、报错代码&#xff1a; 2、原因&#xff1a;项目有点老&#xff0c;vue2的版本&#xff0c;所以node-sass在npm安装的时候大概率的会安装出错&#xff0c;或下载时间过长&#xff0c;因此考虑用dart-sass来替换。 npm install node-sassnpm:dart-sass3、然后就可以成功运行了…

leetcode144、145、94二叉树的前、中、后序遍历

本文主要讲解二叉树的前、中、后序遍历的要点与细节&#xff0c;按照步骤思考更方便理解 c代码如下&#xff0c;末尾 具体要点&#xff1a; 1. 首先我们要了解二叉树的前序&#xff0c;中序&#xff0c;后序的遍历顺序&#xff1a; 前序&#xff1a;中 左 右 中序&a…

8.项目结构——黑马程序员Java最新AI+若依框架项目

目录 前言一、后端1.ruoyi-admin2.ruoyi-common3.ruoyi-framework4. ruoyi-generator(可删除)5.ruoyi-quartz&#xff08;可删除&#xff09;5.ruoyi-system6. ruoyi-ui7.sql8.依赖关系9. 总结 二、前端三、SQL 前言 提示&#xff1a;本篇叙述若依前后端项目结构 一、后端 1…

无线领夹麦克风哪个品牌音质最好,揭秘无线麦克风哪个牌子最好!

​在这个数字化、信息化的时代&#xff0c;短视频和直播已经成为了人们生活中不可或缺的一部分。而无线麦克风&#xff0c;则是这些活动中不可或缺的重要工具。它们能够轻松捕捉声音&#xff0c;让内容更加生动、真实。然而&#xff0c;市场上的无线麦克风种类繁多&#xff0c;…

缓存策略概述

缓存策略 缓存策略是指在计算机系统中&#xff0c;为了提高数据访问效率而临时存储常用或频繁访问的数据的技术。这种技术通常在数据的读取过程中发挥作用&#xff0c;减少对原始数据源的请求次数&#xff0c;从而提升性能和响应速度。 在后端系统中&#xff0c;常见的缓存策…

Kubernetes面试整理-Kubelet, Kube-proxy和Kubernetes API 的功能和它们在集群中的作用

在 Kubernetes 集群中,kubelet、kube-proxy 和 Kubernetes API 是三个关键组件,它们在不同层面上支持集群的正常运行。以下是它们的功能及其在集群中的作用: Kubelet 功能 ● 节点管理:kubelet 运行在每个 Worker 节点上,负责节点上的所有 Pod 和容器的管理。 ● Pod 生命…

51-60 CVPR 2024 最佳论文 | Generative Image Dynamics

在2023年11月&#xff0c;谷歌研究院发布了一项令人瞩目的研究成果——Generative Image Dynamics&#xff08;生成图像动力学&#xff09;。这项技术的核心是将静态的图片转化为动态的、无缝循环的视频&#xff0c;而且更令人兴奋的是&#xff0c;这些生成的视频还具有交互性。…