文本三剑客 之 grep

news2024/10/7 16:23:31

目录

一.grep

1.grep常用选项命令选项

2.grep 命令选项

3.简单的正则表达式

 二.sort 命令

 三.uniq 去重

 四 .语法格式:  tr 选项 参数

 五.快速裁剪命令——cut:

六.split 文件拆分

七.文件合并——paste


一.grep

文本三剑客了之一,对文本内容进行过滤,支持正则表达式,针对行来进行处理

1.grep常用选项命令选项

-m匹配日几次后停止
-i忽略字符大小写
-v取反
-n只显示行号
-c统计匹配的行数
-o

仅显示匹配到的字符串

-A匹配当前行号的后3行
-B匹配当前行的后3行
-c匹配当前行的前3行和后3行
-e条件或  -e可以跟多个选择
-w匹配整个单词
-E使用ERE,相当于egrep,使用扩展正则
-f处理两个文件相同的内容把第一个文件作为匹配条件
- F 不支持正则表达式
-r

递归目录,但不处理软连接

-R递归目录,单处理软连接

2.grep 命令选项

-m 1 ---------- 多从匹配支取几次结果

-i ----------- 忽略字符打大小写  大写也可以小写也可以

-v ------------ 取反 就是过滤所有包含root的信息和字符

-n --------------显示匹配的行号

 

 -c ------------显示匹配的行数  只有两行

 -o ---------仅显示匹配到的字符串 只对文本内容进行处理就是正则表达式

-A  3 --------  后面必须要加个参数否则会报错   显示当前行后3行

 -B 3 ------- 显示当前行数的前3行

-C ----------显示当前行数的前后 个三行 

 -e ------是逻辑或的意思  或打印root   或打印bash 也认可与同时打印    两个条件满足一个即可 

grep -e root -e bash /etc/passwd

 

 -w -----匹配整个单词  

 -E ------ egrep 使用扩展正则

-f -------- 处理连个文件里的相同类容 第一个文件作为匹配条件

 -r -------- 只处理递归目录,但不处理软连接

grep -r a /opt

 -R -------- 只处理递归目录,但不处理软连接

 

3.简单的正则表达式

"^"  以什么为开头

"&" 以什么为结尾

^$ 空行 

把66.txt 里的空行过滤出来 导入到666.txt 里 使用正则表达式的时候  要用“”引号引起来

cat 66.txt | grep -v "^$" > 666.txt

只匹配一个root的行  多个不匹配

grep -n "^root$" 2.txt

 

 二.sort 命令

以行为单位对文件内容进行排序,也可以根据不同的数据类型来排序

sort 常用命令选项

-f忽略大小写,默认会大写字母排在前面
-b忽略每行前面的空格
-n按照数字进行排序
-r反向排序
-u等同uniq,表示相同的数据仅显示一行,去重
-t指定字段分隔符,默认使用tab键分隔
-k指定排序字段

-o

<输出文件>:将排序后的结果转存至指定文件

1.sort  -f 忽略大小写,默认会大写字母排在前面

 2.sort -n 按照数字进行排序

 3. sort -r 反向排序

 4sort-u 去重


 

 

 5.  sort-o   <输出文件>:将排序后的结果转存至指定文件

 

 

 三.uniq 去重

unip 常用选项

-c统计连续重复的行的次数,并且合并重复的行
-u显示仅出现一次的行(包括不连续的重复行)
-d仅显示重复出现的行(必须是连续的重复行)

1.cat 6.txt | uniq   快捷去重

uniq  选项   参数

uniq -u 显示仅出现一次的行(包括不连续的重复行)

uniq -d 仅显示重复出现的行(必须是连续的重复行)

 uniq -c 统计连续重复的行的次数,并且合并重复的行

 四 .语法格式:
  tr 选项 参数

-c保留字符集1的字符,其他的字符(包括换行符\n)用字符集2替换
-d删除所有属于字符集1的字符
-s将重复出现的字符串压缩为一个字符串,用字符集2 替换 字符集1
-t字符集2 替换 字符集1,不加也行

字符集1:
指定要转换或删除的原字符集。当执行转换操作时,
必须使用参数”字符集2“指定转换操作时,必须使用参数”字符集2“指定转换的目标字符集。
但执行删除操作时,不需要参数”字符集2“

字符集2:
指定要转换成的目标字符集

tr .  换成,号

大写替换成小写

保留了ab,替换了c,输出aa

 

 排序输出,压缩空行为一个

 删除ab,打印c

 五.快速裁剪命令——cut:

-d    指定分隔符(默认分隔符为Tab)
-f按字段进行截取。指定第n个字段
-b 以字节为单位进行截取
-c 以字符为单位进行截取

         -d 指定分隔符(默认分隔符为Tab)

 

六.split 文件拆分

-l指定行数
-b指定文件的大小

[root@localhost opt]# cp /etc/passwd /opt/test2.txt
[root@localhost tr]#  split -l 20 test2.txt   sc
[root@localhost opt]# split -b 2m httpd-2.4.29.tar.bz2 sc  指定文件大小,不需要大小写
 

七.文件合并——paste

按照字段来进行文件的合并
格式:

-d用于指定文件的分隔符(默认情况下为制表符"\n")
-s将列和行的内容进行互相交换

paste a b和cat a b 之间的区别 (左右合并)
面试题  统计当前主机的连接状态

   1ESTAB   #表示建立的 TCP 连接处于活动状态
    14 LISTEN

统计当前连接主机数

 

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

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

相关文章

网络通信 --- HTTP 协议初识

目录 &#x1f332;一、HTTP 协议是什么 &#x1f333;二、HTTP协议格式 &#x1f9aa;1.抓包工具的使用(以 Fiddler 为例) &#x1f363;2. 抓包工具的原理 (以 Fiddler 为例) &#x1f364;3. 抓包结果 &#x1f365;① HTTP 请求(request) &#x1f96e;②HTTP响应(re…

chatgpt赋能python:Python中的平均值如何计算?

Python中的平均值如何计算&#xff1f; 在Python编程中&#xff0c;求取列表、元组或数据集合的平均值是一个相当常见的操作。幸运的是&#xff0c;Python内置的统计模块提供了方便的方法去实现这个操作。在这篇文章里&#xff0c;我们将探讨计算平均值的方法&#xff0c;帮助…

Unity制作二次元卡通渲染角色材质——5、脸部的特殊处理

Unity制作二次元材质角色 回到目录 大家好&#xff0c;我是阿赵。 这里继续讲二次元角色材质的制作。这次是讲头部的做法。 1、脸部 之前在分析资源的时候&#xff0c;其实已经发现了这个模型的脸部法线有问题&#xff0c;导致在做光照模型的时候&#xff0c;脸部很奇怪。 把f…

阅读ConcurrentHashMap源码,我学到了什么?

文章目录 ConcurrentHashMap怎样保证线程安全的put元素的流程具体对于红黑树是怎样保证线程安全的如何并发安全的初始化一个数组如何统计存储元素个数的怎样进行多线程扩容的 首先说明, 本篇分析基于jdk1.8. ConcurrentHashMap怎样保证线程安全的 ConcurrentHashMap主要是通过…

Java:字符流

字符流的底层其实就是字节流。 字符流字节流字符集 结构体系&#xff1a; 1.特点 输入流:一次读一个字节&#xff0c;遇到中文时&#xff0c;一次读多个字节。 输出流:底层会把数据按照指定的编码方式进行编码&#xff0c;变成字节再写到文件中。 2.使用场景 对于纯文本…

AI实战营第二期 笔记5——MMPretrain代码课

文章目录 摘要MMPreTrain实战安装推理 OR 使用API数据集训练与测试微调 摘要 MMPretrain 是一个全新升级的预训练开源算法框架&#xff0c;旨在提供各种强大的预训练主干网络&#xff0c; 并支持了不同的预训练策略。MMPretrain 源自著名的开源项目 MMClassification 和 MMSel…

chatgpt赋能python:Python开立方函数math:让数学计算更加简单

Python开立方函数math&#xff1a;让数学计算更加简单 Python作为一种高级编程语言&#xff0c;提供了丰富的数学计算功能&#xff0c;其中就包括了开立方函数math。本篇文章将详细介绍math开立方函数在Python中的使用方法及其优点。 什么是开立方函数&#xff1f; 开立方函…

chatgpt赋能python:Python开发BI,助力企业数据驱动决策

Python开发BI&#xff0c;助力企业数据驱动决策 随着企业数据规模的呈现爆炸式增长&#xff0c;传统的Excel等表格计算工具已经无法满足业务需求&#xff0c;因此&#xff0c;企业需要更加全面和强大的方法来进行数据分析和展示。此时&#xff0c;BI&#xff08;全称Business …

css蓝桥杯--电影院排座位

目录 一、介绍二、准备三、⽬标四、代码五、知识点六、完成 一、介绍 随着⼈们⽣活⽔平的⽇益提升&#xff0c;电影院成为了越来越多的⼈休闲娱乐&#xff0c;周末放松的好去处。各个城市的电影院数量也随着市场的需求逐年攀升。近⽇&#xff0c;⼜有⼀个电影院正在做着开张前…

chatgpt赋能python:Python强制关闭程序的解决方案

Python 强制关闭程序的解决方案 在Python开发过程中&#xff0c;难免会遇到程序卡死&#xff0c;无响应等问题&#xff0c;这时候如果无法正常退出程序&#xff0c;就需要进行强制关闭。本篇文章将介绍Python强制关闭程序的几种解决方案。 方法一: 使用系统命令 在Linux或Ma…

【Java】JavaWEB核心要点总结:64

文章目录 1. TCP 和 UDP的异同2. TCP为什么要三次握手 两次不行吗3. get post put 请求方式有什么区别4. 什么是XXS攻击 如何避免5. 什么是 CSRF 攻击&#xff0c;如何避免 1. TCP 和 UDP的异同 TCP&#xff08;Transmission Control Protocol&#xff09;和UDP&#xff08;Use…

typedef 和 # define 用法区别

typedef 和 # define 用法区别 前言1. 原理不同1.1 typedef int * int_ptr;与#define int_ptr int * 详细讲解 2. 功能不同3. 作用域不同 前言 博主在牛客网上看到了一道有关typedef和# define题目。发现有很多初学的小伙伴对两者的用法不是特别清楚&#xff0c;所以博主在这总…

python内存

在python中&#xff0c;一切都是对象。Python从设计之初就是一门面向对象的语言&#xff0c;它有一个重要的概念&#xff0c;即一切皆对象。 Java虽然也是面向对象编程的语言&#xff0c;但是血统没有Python纯正。比如Java的八种基本数据类型之一int&#xff0c;在持久化的时候…

HCIA-NAT

目录 NAT&#xff1a;网络地址转换 NAT原理&#xff1a; NAT转换原理图&#xff1a; 静态NAT 静态NAT的工作原理&#xff1a; 静态NAT配置命令 静态NAT配置实例&#xff1a; 动态NAT 动态NAT的工作原理 动态NAT&#xff1a; 动态NAT配置命令 动态NAT案例 NAPT NA…

css蓝桥杯--⾃适应⻚⾯

目录 一、介绍二、准备三、⽬标四、代码五、完成 一、介绍 响应式布局是在 2010 年 5 ⽉份提出的⼀个概念&#xff0c;这个概念是为解决移动互联⽹浏览⽽诞⽣的。简⽽⾔之&#xff0c;就是⼀个⽹站能够兼容多个终端——⽽不是为每个终端做⼀个特定的版本。通过响应式布局可以为…

EXCEL文本处理总结:如何查找(/定位)字符串内,符合条件的多个符号里的最后一个?

目录 题外话&#xff1a;学习总结 1 新手切忌贪多 2 熟练者切忌懒惰 3 这2件事恰恰都和人性相反 1 EXCEL文本处理相关函数 2 查找函数 find() 和 search() 2.1 find() 2.2 search() 2.3 下面是测试的公式情况 3 如何查找(定位)符合条件的某个字符的位置&#xff1f;…

MySQL触发器的使用

目录 一、前言二、触发器分类1.插入触发器2.更新触发器3.删除触发器 三、查看触发器四、异常处理五、小结 一、前言 各种主流数据库,都集成了触发器的功能。触发器提供了一种机制,允许开发者在对数据库表的插入、更新、删除的前后捕获相应的数据行。从而针对数据行实现特定的逻…

DebugView的使用

目录 一、前言二、本机调试1.DebugView程序文件说明2.OutputDebugString函数使用3.示例程序4.远程调试 三、问题与注意事项四、小结 一、前言 DebugView是windows下的一款调试工具,可以捕获程序输出的日志,分为64位和32位,支持应用层和内核层的日志捕获,利用它排除bug是个不错的…

chatgpt赋能python:Python开发手机软件的优势和挑战

Python开发手机软件的优势和挑战 随着智能手机的普及&#xff0c;移动应用开发已成为当前最热门的技术领域之一。随着越来越多的企业意识到移动应用的重要性&#xff0c;越来越多的开发者开始加入这个领域。 在移动应用的开发中&#xff0c;由于其高效性和易于学习的特点&…

【Flutter】Dart/Flutter SDK如何降低版本、回退到指定版本

因为dart3.0以后不再支持 no-sound-null-safety&#xff1b;但是有些项目不得以切换到dart3.0以前继续使用运行项目 方法1&#xff1a; 通过 $ flutter downgrade命令&#xff0c;将flutter降级为当前通道的上一个活动版本&#xff1b; 如果没有存在老版本则会提示 flutter …