linux文本三剑客 --- grep、sed、awk
1、grep
grep:使用正则表达式搜索文本,将匹配的行打印出来(匹配到的标红)
命令格式:grep` `[option] pattern ``file
<1> 命令参数
-A<显示行数>:除了显示符合范本样式的那一列之外,并显示该行之后的内容。
-B<显示行数>:除了显示符合样式的那一行之外,并显示该行之前的内容。
-C<显示行数>:除了显示符合样式的那一行之外,并显示该行之前后的内容。
-c:统计匹配的行数
-e :实现多个选项间的逻辑or 关系
-E:扩展的正则表达式
-f FILE:从FILE获取PATTERN匹配
-F :相当于fgrep
-i --ignore-case #忽略字符大小写的差别。
-n:显示匹配的行号
-o:仅显示匹配到的字符串
-q: 静默模式,不输出任何信息
-s:不显示错误信息。
-v:显示不被pattern 匹配到的行,相当于[^] 反向匹配
-w :匹配 整个单词
<2> 实战演示




2、awk
awk:文本分析工具
命令格式:awk``[options] pattern file···
<1> 命令参数
-F fs or --field-separator fs
指定输入文件折分隔符,fs是一个字符串或者是一个正则表达式,如-F:。
-v var=value or --asign var=value
赋值一个用户定义变量。
-f scripfile or --file scriptfile
从脚本文件中读取awk命令。
-mf nnn and -mr nnn
对nnn值设置内在限制,-mf选项限制分配给nnn的最大块数目;-mr选项限制记录的最大数目。这两个功能是Bell实验室版awk的扩展功能,在标准awk中不适用。
-W compact or --compat, -W traditional or --traditional
在兼容模式下运行awk。所以gawk的行为和标准的awk完全一样,所有的awk扩展都被忽略。
-W copyleft or --copyleft, -W copyright or --copyright
打印简短的版权信息。
-W help or --help, -W usage or --usage
打印全部awk选项和每个选项的简短说明。
-W lint or --lint
打印不能向传统unix平台移植的结构的警告。
-W lint-old or --lint-old
打印关于不能向传统unix平台移植的结构的警告。
-W posix
打开兼容模式。但有以下限制,不识别:/x、函数关键字、func、换码序列以及当fs是一个空格时,将新行作为一个域分隔符;操作符**和**=不能代替^和^=;fflush无效。
-W re-interval or --re-inerval
允许间隔正则表达式的使用,参考(grep中的Posix字符类),如括号表达式[[:alpha:]]。
-W source program-text or --source program-text
使用program-text作为源代码,可与-f命令混用。
-W version or --version
打印bug报告信息的版本。
<2> 实战演示
[1] 显示/etc/passwd中包含root的行
[2] 用:分隔,显示passwd中的每行的第一个字段和第七个字段
[3] 用:分隔,筛选以/root开头,显示结果每行的第一个字段和第七个字段
[4] 以:分隔,显示passwd中第三个字段大于999的行的第一个字段和第七个字段
3、sed
sed:利用脚本来处理文本文件
命令格式:sed [-hnV][-e<script>][-f<script文件>][文本文件]
<1> 命令参数
-e<script> 或--expression=<script> 以选项中指定的script来处理输入的文本文件。
-f<script文件> 或--file=<script文件> 以选项中指定的script文件来处理输入的文本文件。
-i 直接修改文件内容(危险操作)
-h 或--help 显示帮助。
-n 或--quiet 或--silent 仅显示script处理后的结果。
-V 或--version 显示版本信息。动作显示:
a :新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~
c :取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行!
d :删除,因为是删除啊,所以 d 后面通常不接任何咚咚;
i :插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);
p :打印,亦即将某个选择的数据印出。通常 p 会与参数 sed -n 一起运行~
s :取代,可以直接进行取代的工作哩!通常这个 s 的动作可以搭配正规表示法!例如 1,20s/old/new/g 就是啦!
<2> 实战演示
[1] -n:显示处理后的结果;p:打印显示匹配的行
打印第12行
打印第 12-18行
打印总行数
[2] a和i:插入文本或者附加文本
在含有FTP的行后面添加一行,内容是123
在第5行填前面添加一行,内容“456”
[3] 参数d:删除
删除第5行
删除第2,3行
[4] 参数p:打印命令
搜索passwd中包含root关键字的行
[4] 参数s:替换命令
显示本地ip地址
![]()
附:正则表达式
<1> 匹配格式
-
. 匹配任意单个字符,不能匹配空行
-
[] 匹配指定范围内的任意单个字符
-
[^] 取反
-
[:alnum:] 或 [0-9a-zA-Z]
-
[:alpha:] 或 [a-zA-Z]
-
[:upper:] 或 [A-Z]
-
[:lower:] 或 [a-z]
-
[:blank:] 空白字符(空格和制表符)
-
[:space:] 水平和垂直的空白字符(比[:blank:]包含的范围广)
-
[:cntrl:] 不可打印的控制字符(退格、删除、警铃...)
-
[:digit:] 十进制数字 或[0-9]
-
[:xdigit:]十六进制数字
-
[:graph:] 可打印的非空白字符
-
[:print:] 可打印字符
-
[:punct:] 标点符号
<2> 演示

<3> 配置次数
-
* 匹配前面的字符任意次,包括0次,贪婪模式:尽可能长的匹配
-
.* 任意前面长度的任意字符,不包括0次
-
\? 匹配其前面的字符0 或 1次
-
+ 匹配其前面的字符至少1次
-
{n} 匹配前面的字符n次
-
{m,n} 匹配前面的字符至少m 次,至多n次
-
{,n} 匹配前面的字符至多n次
-
{n,} 匹配前面的字符至少n次
<4> 演示

相关文章:
linux文本三剑客 --- grep、sed、awk
1、grep grep:使用正则表达式搜索文本,将匹配的行打印出来(匹配到的标红) 命令格式:grep [option] pattern file <1> 命令参数 -A<显示行数>:除了显示符合范本样式的那一列之外,并…...
leetcode 107.二叉树的层序遍历II
题目 思路 正常层序遍历输出: [[3],[9,20],[15,7]] 这道题要求的输出:[[15,7],[9,20],[3]] 可以观察到,只要我们把原来的结果reverse一下就行了。 代码 //leetcode submit region begin(Prohibit modification and deletion)import java…...
Java生成唯一ID的方式有哪些?
在Java中生成唯一ID的方法多种多样,以下是几种常用方法及其示例代码: 1. 使用UUID UUID是一种普遍采用的生成唯一ID的方法,Java通过java.util.UUID类提供了简单的方法来生成。 import java.util.UUID;public class UniqueIdExample {publi…...
代码随想录day44:动态规划over,回文子串及字序列
文章目录 day44:动态规划over,回文子串647.回文子串516.最长回文子序列 day44:动态规划over,回文子串 647.回文子串 class Solution {public int countSubstrings(String s) { // 布尔类型的dp[i][j]:表示区间范围[i…...
ElasticSearch启动报错:Exception in thread “main“ SettingsException
Exception in thread "main" SettingsException[Failed to load settings from [elasticsearch.yml]]; nested: ParsingException[Failed to parse object: expecting token of type [START_OBJECT] but found [VALUE_STRING]]; 这个报错说明elasticsearch.yml这个配…...
git配置密钥
要配置 Git 密钥,可以按照以下步骤进行操作: 1.生成密钥:首先,在终端或命令提示符中运行以下命令生成密钥对: ssh-keygen -t rsa -b 4096 -C "dengweng-pulse.net"这将生成一个 RSA 密钥对,其中…...
Pandas库常用方法、函数集合
Pandas是Python数据分析处理的核心第三方库,它使用二维数组形式,类似Excel表格,并封装了很多实用的函数方法,让你可以轻松地对数据集进行各种操作。 这里列举下Pandas中常用的函数和方法,方便大家查询使用。 读取 写…...
Qt实现TFTP Server和 TFTP Client(一)
1 概述 TFTP协议是基于UDP的简单文件传输协议,协议双方为Client和Server.Client和Server之间通过5种消息来传输文件,消息前两个字节Code是消息类型,消息内容随消息类型不同而不同。传输模式有三种:octet,netascii和mail,octet为二…...
MySQL数据库的日志管理以及备份和恢复
目录 1、日志管理 2、查询日志 3、数据备份的重要性 4、数据库备份的分类 4.1物理备份 4.2逻辑备份: 4.3完全备份 5、常见的备份方法 6、MySQL完全备份 6.1MySQL完全备份优缺点 6.2数据库完全备份分类 6.2.1物理冷备份与恢复 6.2.2mysqldump备份…...
Maven发布开源框架到远程仓库
1.背景 当你写了一个自我感觉良好的开源工具希望给他人分享,如果只是在github等网站进行公布之外,用户使用起来还不是很方便,特别是当你提供是特定领域的基础工具。你还可以把它部署到中央仓库,这样别人使用就会方便很多。接下来…...
Qt创建窗口选择的三个父类介绍 ----- QWidget、QMainWindow、QDialog
QWidget类 简介 QWidget是Qt中所有用户界面元素的基类。它提供了窗口的基本功能,并允许用户自定义窗口的外观和行为。QWidget可以包含其他QWidget子类的子窗口,从而实现复杂的用户界面。 特性 提供了窗口的基本功能,包括绘制、事件处理、…...
论文翻译 - Defending Against Alignment-Breaking Attacks via Robustly Aligned LLM
论文链接:https://arxiv.org/pdf/2309.14348.pdf Defending Against Alignment-Breaking Attacks via Robustly Aligned LLM Abstract1 Introduction2 Related Works3 Our Proposed Method3.1 Threat Model3.2 Our Proposed Method3.3 Practical Designs3.4 Theoret…...
Kafka总结问题
Kafka Kafka Kafka Kafka的核心概念/ 结构 topoic Topic 被称为主题,在 kafka 中,使用一个类别属性来划分消息的所属类,划分消息的这个类称为 topic。topic 相当于消息的分配标签,是一个逻辑概念。主题好比是数据库的表࿰…...
【RPG Maker MV 仿新仙剑 战斗场景UI (八)】
RPG Maker MV 仿新仙剑 战斗场景UI 八 状态及装备场景代码效果 状态及装备场景 本计划在战斗场景中直接制作的,但考虑到在战斗场景中加入太多的窗口这不太合适,操作也繁琐,因此直接使用其他场景。 代码 Pal_Window_EquipStatus.prototype.…...
【PyQt】18 -菜单等顶层操作
顶层界面的使用 前言一、菜单栏1.1 代码1.2 运行结果 二、工具栏2.1 代码几种显示方法 2.2 运行结果 三、状态栏3.1 代码3.2 运行结果 总结 前言 1、介绍顶层菜单栏目的使用,但没有陆续绑定槽函数。 2、工具栏 3、状态栏 一、菜单栏 1.1 代码 #Author :…...
线性代数基础概念和在AI中的应用
基本概念 线性代数是数学的一个分支,专注于向量、向量空间(也称为线性空间)、线性变换和矩阵的研究。这些概念在数据科学、人工智能、工程学和物理学等多个领域都有广泛应用。以下是这些基本概念的详细解释和它们在数据处理和AI中的应用。 …...
elasticsearch _cat/indices docs.count is different than <index>/_count
今天遇到一个问题,kibana中看到文档数与下面语句查询到的不同 GET /_cat/count/jiankunking_xxxxx_product_expand_test?v GET /jiankunking_xxxxx_product_expand_test/_search?track_total_hitstrue语句查询结果 epoch timestamp count 1711433785 06:16…...
关系型数据库mysql(7)sql高级语句
目录 一.MySQL常用查询 1.按关键字(字段)进行升降排序 按分数排序 (默认为升序) 按分数升序显示 按分数降序显示 根据条件进行排序(加上where) 根据多个字段进行排序 编辑 2.用或(or&…...
计算机网络——网络基础1
网络基础一 1.初识网络 网卡也是一种文件,所以对于网络的编程也是一种文件操作; 早期由于不同的计算机之间要根据数据进行协作,但是计算机之间是独立的,所以使用了光驱或者软盘之类的进行协作;对于将计算机连…...
ERDUnet: An Efficient Residual Double-codingUnet for Medical Image Segmentation
ERDUnet:一种用于医学图像分割的高效残差双编码单元 摘要 医学图像分割在临床诊断中有着广泛的应用,基于卷积神经网络的分割方法已经能够达到较高的准确率。然而,提取全局上下文特征仍然很困难,而且参数太大,无法临床应用。为此,我们提出了一种新的网络结构来改进传统的…...
小程序对商家私域运营到底有多重要?
小程序对商家私域运营到底有多重要?在企业持续获取客户成本不断上升的背景下,越来越多商家开始关注“私域运营”,而小程序也逐渐成为这一体系中的核心工具。小程序对商家私域运营的重要性,本质上体现在“用户沉淀能力与转化效率的…...
从10分钟/件到30秒/件!我用YOLOv8自动识别电商SKU,效率提升10倍
上周三凌晨2点,我盯着电脑屏幕发呆:又到了电商商品上架的时间。人工识别SKU需要10分钟/件,系统错误率高达15%,仓库主管拍桌子说"这AI比老式Excel还慢"。我试过12种方案,结果全是"识别失败"、“精度…...
M2LOrder模型在STM32项目中的潜在应用:边缘设备情绪反馈
M2LOrder模型在STM32项目中的潜在应用:边缘设备情绪反馈 最近在捣鼓一个基于STM32的智能硬件项目,想给它加点“人情味”。比如,当用户对它说话时,它能感知到用户的情绪是开心还是沮丧,并给出更贴切的反馈。这听起来很…...
鸿蒙应用开发实战:手把手教你封装一个可复用的音乐播放器管理类(ArkTS版)
鸿蒙应用开发实战:构建高可复用的音乐播放器管理类(ArkTS版) 在鸿蒙应用开发中,音频播放功能是许多应用的核心需求。本文将深入探讨如何设计一个健壮、可复用的音乐播放器管理类,采用ArkTS语言实现,帮助开发…...
图片去水印 API 接口实战:网站如何实现自动去水印(Python / PHP / C#)
在做网站或后台系统时,一个很常见但容易被忽视的问题是: 👉 用户上传的图片自带水印 👉 平台展示希望统一成干净版本 👉 还要支持批量、自动化处理 👉 最好能无缝接入现有系统 如果你正在找: …...
Ubuntu14.04下用USRP B100实现多模式无线传输:从PSK到QAM的实战配置
Ubuntu 14.04环境下USRP B100多模式无线传输实战指南 在软件定义无线电(SDR)领域,USRP设备配合GNU Radio软件平台已经成为研究和开发无线通信系统的黄金标准组合。本文将带您深入探索如何在Ubuntu 14.04系统中配置USRP B100硬件,实现从基础PSK到复杂QAM等…...
从零开始:在Unity中完美实现视频播放功能的完整指南(附常见报错解决方案)
从零开始:在Unity中完美实现视频播放功能的完整指南(附常见报错解决方案) 在游戏开发中,视频播放功能的应用场景越来越广泛——从开场动画、过场剧情到UI背景,视频元素能为玩家带来更丰富的视听体验。Unity作为主流的…...
vLLM-v0.17.1部署实战教程:3步启用OpenAI兼容API服务
vLLM-v0.17.1部署实战教程:3步启用OpenAI兼容API服务 1. vLLM框架简介 vLLM是一个专为大型语言模型(LLM)设计的高性能推理和服务库,以其出色的速度和易用性著称。这个项目最初由加州大学伯克利分校的天空计算实验室开发,现在已经发展成为一…...
zynq7020 u-boot 外设配置实战指南
1. Zynq7020 U-Boot外设配置概述 在嵌入式系统开发中,U-Boot作为系统启动加载器扮演着关键角色。对于Xilinx Zynq-7020平台来说,正确配置U-Boot外设是确保系统正常启动和运行的基础。本文将重点介绍网口、QSPI Flash和eMMC这三个核心外设的配置方法。 为…...
【ROS2 基础】ROS2与Colcon核心指令速查手册与避坑指南
为了在 ROS2 的日常开发中提升效率,本文为您整理了一份结构化的核心指令速查清单。去除了冗长的理论,直击实战痛点,并附带了多平台差异、性能优化数据以及常见报错的修复方案。 文章目录[TOC]一、 快速入门:3步跑通基础流程二、 版…...
