当前位置: 首页 > news >正文

文本三剑客之grep命令和awk命令 1.0 版本

grep + awk

  • 1.grep命令
    • 1.1 基本格式
    • 1.2 常用选项
  • 2.awk命令
    • 2.1 awk工作原理
    • 2.2 awk命令格式
    • 2.3 awk常用内置变量

1.grep命令

1.1 基本格式

grep [选项]… 查找条件 目标文件


1.2 常用选项

选项功能
-m [ x ]匹配x次 后停止,x为具体数字
-v取反
-i忽略字符大小写
-n显示匹配的 行号
-c统计匹配的行数
-o 仅显示匹配到的字符串
-q静默模式,不输出任何信息
-A x after匹配内容的后x行
-B x before前x行
-C x context前后各x行
-e实现多个选项间的逻辑or关系
-w匹配 整个单词
-E 使用扩展正则表达式,相当于egrep
-F不支持正则表达式,相当于fgrep
-r递归目录,但不处理软链接
-R递归目录,但处理软链接
-f filefile 根据模式文件,处理两个文件相同内容 把第一个文件作为匹配条件
-color=auto对匹配到的文本着色显示
-m  匹配#次后停止grep -m 1 root /etc/passwd   #多个匹配只取第一个

在这里插入图片描述

-v 取反grep -Ev '^[[:space:]]*#|^$' /etc/fstab#非空行

在这里插入图片描述

-c 统计匹配的行数grep -c root /etc/passwd    #统计匹配到的行数

在这里插入图片描述

-A x after 匹配内容的后x行 grep -A3 root /etc/passwd   #匹配到的行后3行业显示出来

在这里插入图片描述

-e 实现多个选项间的逻辑or关系grep -e root -e bash /etc/passwd #包含root或者包含bash 的行grep -E root|bash  /etc/passwd #使用扩展正则表达式的写法

在这里插入图片描述

-w 匹配整个单词grep -w root /etc/passwd

在这里插入图片描述

2.awk命令

2.1 awk工作原理

+-----------------+
|    输入文件     |
|    或标准输入   |
+-----------------+|v
+-----------------+
|   分割输入行    |
+-----------------+|v
+-----------------+
|    匹配模式     |
+-----------------+|v
+-----------------+
|    执行动作     |
+-----------------+|v
+-----------------+
|   处理下一行    |
+-----------------+|v循环结束
  1. 读取输入:AWK首先读取输入文件或从标准输入接收输入;

  2. 分割输入:AWK默认将输入行分割成字段,并使用空格或制表符作为字段分隔符;

  3. 匹配模式:AWK使用模式匹配来确定需要处理的行,可以使用正则表达式或其他条件来指定匹配的行。如果没有指定模式,AWK将默认匹配所有行;

  4. 执行动作:当输入行与模式匹配时,AWK执行相应的动作;

  5. 处理下一行:一旦完成当前行的处理,AWK继续处理下一行,重复上述步骤。

2.2 awk命令格式

awk默认使用正则表达式 所以不需要\

#命令格式#
awk [选项] '[模式匹配条件]{操作 }'  文件1 文件2..
#选项##一般只有-F常用
-F  指定分隔符,默认的分隔符是若干个连续空白符,默认的时候可不写
-v  自定义变量
-f  脚本awk '/匹配条件/{ print $x }'#匹配条件可以不写 x为任意数字
#模式匹配条件格式#/    匹配条件       / 
# 起始               结束    
#/  / 一定要加 
#操作#
#常用的 只有 print awk  '{ print $1  }'awk '{ print $1 $2 $3 .... }'#awk会自动压缩空格,不需要再写tr -s '  '

2.3 awk常用内置变量

内置变量功能
FS指定每行文本的字段分隔符,缺省为空格或制表符(tab)。与 “-F”作用相同 -v “FS=:”
OFS输出时的分隔符
NF当前处理的行的字段个数
NR当前处理的行的行号(序数)
$0当前处理的行的整行内容
$n当前处理行的第n个字段(第n列)
FILENAME被处理的文件名
RS行分隔符。awk从文件上读取资料时,将根据RS的定义就把资料切割成许多条记录,而awk一次仅读入一条记录进行处理。预设值是\n
###########  FS  #################
[root@localhost ky15]#awk -v FS=':' '{print $1FS$3}' /etc/passwd
#此处FS 相当于于变量  -v 变量赋值  相当于 指定: 为分隔符  
[root@localhost ky15]#awk -F: '{print $1":"$3}' /etc/passwdshell中的变量
[root@localhost ky15]#fs=":";awk -v FS=$fs '{print $1FS$3}' /etc/passwd
#定义变量传给FS#########   支持变量    ##################
[root@localhost ky15]#fs=":";awk -v FS=$fs -v OFS="+" '{print $1,$3}' /etc/passwd
#输出分隔符-F  -FS一起使用  -F 的优先级高############   OFS    ##########
[root@localhost ~]#awk -v FS=':' -v OFS='==' '{print $1,$3}' /etc/passwd
root==0
bin==1
daemon==2
adm==3
lp==4
sync==5########   RS    #######       
默认是已 /n (换行符)为一条记录的分隔符
不动他
[root@localhost ~]#echo $PATH | awk -v RS=':' '{print $0}'
/usr/local/sbin
/usr/local/bin
/usr/sbin
/usr/bin
/root/bin##################   NF  ###################
代表字段的个数
[root@localhost ky15]#awk -F: '{print NF}' /etc/passwd[root@localhost ky15]#awk -F: '{print $NF}' /etc/passwd
#$NF最后一个字段[root@localhost ky15]#df|awk -F: '{print $(NF-1)}'
#倒数第二行
[root@localhost ky15]#df|awk -F "[ %]+" '{print $(NF-1)}'################    NR    ######################
行号
[root@localhost ky15]#awk '{print $1,NR}' /etc/passwd
##行号
[root@localhost ky15]#awk 'NR==2{print $1}' /etc/passwd
#只取第二行的第一个字段
[root@localhost ky15]#awk 'NR==1,NR==3{print}' passwd 
#打印出1到3 行
[root@localhost ky15]#awk 'NR==1||NR==3{print}' passwd
#打印出1和3行
[root@localhost ky15]#awk '(NR%2)==0{print NR}' passwd
#打印出函数取余数为0行
[root@localhost ky15]#awk '(NR%2)==1{print NR}' passwd
#打印出函数取余数为1的行
[root@localhost ky15]#awk 'NR>=3 && NR<=6{print NR,$0}' /etc/passwd[root@localhost ky15]#seq 10|awk 'NR>5 && NR<10'
#取 行间
6
7
8
9
[root@localhost ky15]#awk '$3>1000{print}' /etc/passwd
#注意分隔符
#打印出普通用户 第三列 大于1000 的行################ FNR  ############
[root@localhost data]#cat /etc/issue |wc -l
3
[root@localhost data]#cat /etc/os-release |wc -l
16
[root@localhost data]#awk '{print FNR}' /etc/issue /etc/os-release 
1
2
3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16################ FILENAME ############
[root@localhost ~]#awk -F: 'NR==2{print FILENAME}' /etc/passwd
/etc/passwd

相关文章:

文本三剑客之grep命令和awk命令 1.0 版本

grep awk 1.grep命令1.1 基本格式1.2 常用选项 2.awk命令2.1 awk工作原理2.2 awk命令格式2.3 awk常用内置变量 1.grep命令 1.1 基本格式 grep [选项]… 查找条件 目标文件1.2 常用选项 选项功能 -m [ x ]匹配x次 后停止,x为具体数字-v取反 -i忽略字符大小写 -n显示匹配的 …...

【软件测试】Linux环境Ant调用Jmeter脚本并且生成测试报告(详细)

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 准备工作 需要在…...

MySQL的YEAR函数

MySQL的YEAR函数用于提取日期或日期时间值的年份部分。 语法&#xff1a; YEAR(date)参数&#xff1a; date&#xff1a;要提取年份的日期或日期时间值。 示例&#xff1a; SELECT YEAR(2023-08-09); -- 返回 2023SELECT YEAR(2023-08-09 14:16:20); -- 返回 2023注意事项…...

208、仿真-51单片机脉搏心率与心电报警Proteus仿真设计(程序+Proteus仿真+配套资料等)

毕设帮助、开题指导、技术解答(有偿)见文未 目录 一、硬件设计 二、设计功能 三、Proteus仿真图 四、程序源码 资料包括&#xff1a; 需要完整的资料可以点击下面的名片加下我&#xff0c;找我要资源压缩包的百度网盘下载地址及提取码。 方案选择 单片机的选择 方案一&a…...

787. 归并排序

文章目录 QuestionIdeasCode Question 给定你一个长度为 n 的整数数列。 请你使用归并排序对这个数列按照从小到大进行排序。 并将排好序的数列按顺序输出。 输入格式 输入共两行&#xff0c;第一行包含整数 n 。 第二行包含 n 个整数&#xff08;所有整数均在 1∼109 范围…...

【马蹄集】第二十二周——进位制与字符串专题

进位制与字符串专题 目录 MT2179 01操作MT2182 新十六进制MT2172 萨卡兹人MT2173 回文串等级MT2175 五彩斑斓的串 MT2179 01操作 难度&#xff1a;黄金    时间限制&#xff1a;1秒    占用内存&#xff1a;128M 题目描述 刚学二进制的小码哥对加减乘除还不熟&#xff0c;他…...

【Spring Cloud +Vue+UniApp】智慧建筑工地平台源码

智慧工地源码 、智慧工地云平台源码、 智慧建筑源码支持私有化部署&#xff0c;提供SaaS硬件设备运维全套服务。 前言&#xff1a;互联网建筑工地&#xff0c;是将互联网的理念和技术引入建筑工地&#xff0c;从施工现场源头抓起&#xff0c;最大程度的收集人员、安全、环境、材…...

使用一个python脚本抓取大量网站【2/3】

一、说明 我如何使用一个 Python 脚本抓取大量网站&#xff0c;在第 2 部分使用 Docker &#xff0c;“我如何使用一个python脚本抓取大量网站”统计数据。在本文中&#xff0c;我将与您分享&#xff1a; Github存储库&#xff0c;您可以从中克隆它;链接到 docker 容器&#xf…...

黑马项目一完结后阶段面试45题 JavaSE基础部分20题(二)

十一、集合体系结构和特点 Collection └ List 有索引&#xff0c;存取一致&#xff0c;有序&#xff0c;元素允许重复 ┃ └ ArrayLIst ┃ └ LinkedList ┃ └ Vector └ Set 无索引&#xff0c;无序&#xff0c;元素不允许重复 └ HashSet └ TreeSet └ Linke…...

防御第九次作业

一、根据以下问题总结当天内容 1. SSL工作过程是什么&#xff1f; 当客户端向一个 https 网站发起请求时&#xff0c;服务器会将 SSL 证书发送给客户端进行校验&#xff0c;SSL 证书中包含一个公钥。校验成功后&#xff0c;客户端会生成一个随机串&#xff0c;并使用受访网站的…...

Java刷题——代码随想录Day1

代码随想录Day1 数组 二分查找 力扣704.二分查找 二分查找有几个最重要的特点&#xff1a; 对于需要用到”二分查找“的数组来说&#xff08;即用二分查找来找到确切的某一个元素&#xff09;&#xff0c;这个数组中的元素不能重复&#xff1b; 被操作的数组一定要是有序的…...

android,Compose,消息列表和动画(点击item的时候,就会删除)

Compose,消息列表和动画&#xff08;点击item的时候&#xff0c;就会删除&#xff09; package com.example.mycompose08import android.os.Bundle import androidx.activity.ComponentActivity import androidx.activity.compose.setContent import androidx.compose.foundat…...

go-admin 使用开发

在项目中使用redis 作为数据缓存&#xff1a;首先引入该包 “github.com/go-redis/redis/v8” client : redis.NewClient(&redis.Options{Addr: config.QueueConfig.Redis.Addr, // Redis 服务器地址Password: config.QueueConfig.Redis.Password, // Redis 密码&…...

力扣的板子

板子 线性筛法求质因子的板子快速幂 线性筛法求质因子的板子 int limit 100000; //修改为题目中的数字的上限 bool isprime[100005] {0}; //保存所有1~limit中的数字是不是质数 int myprime[100005] {0}; //保存2~limit中所有数字的最小质因子 int primes[100000] {0}; …...

基于Matlab实现路径规划算法(附上15个完整仿真源码)

路径规划是机器人技术中非常重要的一项任务&#xff0c;它涉及到机器人在复杂环境中的自主移动和避障能力。在本文中&#xff0c;我们将介绍利用多种算法实现路径规划的Matlab程序&#xff0c;包括模拟退火算法、RRT算法、PRM算法、聚类算法、potential算法、GA算法、fuzzy算法…...

纯跟踪(Pure Pursuit)路径跟踪算法研究(2)

纯跟踪(Pure Pursuit)路径跟踪算法研究&#xff08;2&#xff09; 下午进行了简单的公式推导&#xff0c;理论推导部分是没有问题的 下面的博客提供了在实车上用 GPS 实现纯跟踪控制的一些思路和注意点 Pure Pursuit&#xff08;纯追踪算法&#xff09;ROS实践 并不急于在实车…...

前后端分离------后端创建笔记(02)

本文章转载于【SpringBootVue】全网最简单但实用的前后端分离项目实战笔记 - 前端_大菜007的博客-CSDN博客 仅用于学习和讨论&#xff0c;如有侵权请联系 源码&#xff1a;https://gitee.com/green_vegetables/x-admin-project.git 素材&#xff1a;https://pan.baidu.com/s/…...

Webpack5 Preload/Prefetch技术

文章目录 什么是Preload/Prefetch技术一、Preload&#xff1a;确保必需资源的快速获取二、Prefetch&#xff1a;预加载未来可能使用的资源三、使用注意事项四、Prefetch&#xff1a;总结 什么是Preload/Prefetch技术 在现代Web开发中&#xff0c;页面加载速度对于用户体验至关…...

PHP原生类

什么是php原生类 原生类就是php内置类&#xff0c;不用定义php自带的类&#xff0c;即不需要在当前脚本写出&#xff0c;但也可以实例化的类 我们可以通过脚本找一下php原生类 <?php $classes get_declared_classes(); foreach ($classes as $class) {$methods get_clas…...

QGIS3.28的二次开发八:显示shp的属性表

这里实现两个基本的 GIS 软件需求&#xff1a;矢量图层的属性表显示&#xff0c;以及根据属性筛选要素。 具体需求如下&#xff1a; 加载一个矢量图层并打开其属性表&#xff1b;输入筛选条件确认无误后&#xff0c;画布上和属性表中均只显示筛选后的要素。 QGIS 提供了若干…...

NoahGameFrame监控与日志:构建可观测的游戏服务器体系

NoahGameFrame监控与日志&#xff1a;构建可观测的游戏服务器体系 【免费下载链接】NoahGameFrame A fast, scalable, distributed game server engine/framework for C, include the actor library, network library, can be used as a real time multiplayer game engine ( M…...

AI Agent在物联网(IoT)中的应用前景

AI Agent在物联网&#xff08;IoT&#xff09;中的应用前景&#xff1a;从传感器孤岛到自治协作的智能数字生态 副标题&#xff1a;基于LLM/多模态感知、边缘云协同与分布式自治架构的深度实践与未来展望摘要/引言 问题陈述 当前的物联网&#xff08;IoT&#xff09;系统正陷入…...

别再死磕命令行!用eNSP+USG6000V零基础搞定防火墙Web管理界面(附虚拟网卡配置避坑指南)

零基础玩转防火墙&#xff1a;eNSPUSG6000V图形化管理全攻略 第一次接触防火墙配置时&#xff0c;命令行界面总让人望而生畏。作为网络安全领域的敲门砖&#xff0c;图形化管理界面&#xff08;Web UI&#xff09;无疑是新手更友好的选择。本文将带你用华为eNSP模拟器和USG600…...

告别卡顿!用GStreamer的nvv4l2decoder插件为你的RTSP播放器开启GPU硬解

告别卡顿&#xff01;用GStreamer的nvv4l2decoder插件为你的RTSP播放器开启GPU硬解 在实时视频处理领域&#xff0c;卡顿和延迟是开发者最头疼的问题之一。想象一下&#xff0c;当你正在构建一个多路视频分析系统时&#xff0c;CPU软解带来的高负载不仅让机器风扇狂转&#xff…...

2026供应商审核重点:5大维度+AI工具应用指南

供应商审核的重点关注点主要包括资质合规性、质量体系、风险监控、供应链穿透和响应能力这五大核心维度。2026年行业又迎来了新要求&#xff0c;供应链需穿透到三级、AI预警替代人工监控、质量数据实时可追溯成为标配。用风鸟企业查询平台可以一站式搞定这些审核要点&#xff0…...

Linux命令:netstat

netstat 命令 基本介绍 netstat 命令用于显示网络状态&#xff0c;包括网络连接、路由表、接口统计等信息。它是 Linux 系统中常用的网络工具之一&#xff0c;用于监控网络连接和排查网络问题。 资料合集&#xff1a;https://pan.quark.cn/s/6fe3007c3e95、https://pan.quark.c…...

2026 年端侧 AI 加速落地,荣耀转型 AI 终端生态公司,揭秘 AI 手机迭代方向与战略布局

2026 年&#xff1a;端侧 AI 加速落地 2026 年&#xff0c;AI 正在加速从云端落地到端侧。3 月下旬&#xff0c;国内几大手机厂商几乎同时推送了端侧 AI 的大规模更新&#xff0c;把原本仅限于旗舰机的 AI 能力下放到中端和千元机市场&#xff0c;端侧 AI 成为大部分智能手机的…...

深入解析ToTensor():从PIL到OpenCV的图像预处理最佳实践

1. ToTensor()的隐藏技能&#xff1a;不只是格式转换 很多人第一次看到ToTensor()这个函数名时&#xff0c;都会以为它只是简单地把图像数据转换成PyTorch的Tensor格式。但当我深入研究源码后才发现&#xff0c;这个函数背后藏着不少容易被忽略的重要细节。让我用一个实际项目中…...

【智能代码生成实战权威指南】:长代码场景下3大致命缺陷与7步修复框架

第一章&#xff1a;智能代码生成在长代码中的挑战 2026奇点智能技术大会(https://ml-summit.org) 长代码上下文建模是当前大语言模型在编程任务中面临的核心瓶颈。当函数体超过2000行、模块依赖深度超过5层或跨文件调用链超过10跳时&#xff0c;主流代码生成模型的语义一致性错…...

从大模型到自主决策:AI Agent的核心进化路径

从大模型到自主决策&#xff1a;AI Agent的核心进化路径 1. 引入与连接&#xff1a;从"提问-回答工具"到"能干活的伙伴"的认知跃迁 核心概念 本节的核心概念包括通用人工智能(GAI)认知误区、工具AI(TAI)与自主AI(AAI)的本质分野、AI Agent的直观锚点&#…...