linux常用命令介绍 03 篇——常用的文本处理工具之grep和cut(以及部分正则使用)

news2024/9/24 1:16:35

linux常用命令介绍 03 篇——常用的文本处理工具之grep和cut(以及部分正则使用)

  • 1 常用命令01篇 和 02篇
    • 1.1 Linux命令01篇——Linux解压缩文件常用命令
    • 1.2 Linux命令02篇——linux日常常用命令介绍
  • 2. 正则表达式
    • 2.1 基本定义
    • 2.2 正则中常用的元字符
  • 3. grep 工具
    • 3.1 grep 工具使用语法
    • 3.2 grep工具使用例子
      • 3.2.1 常用选项的使用例子(非正则)
      • 3.2.2 grep中正则eg1——开头、结尾、空行 和 -v
      • 3.2.3 grep中正则eg2——`*`和`.`和`.*`
      • 3.2.4 grep中正则eg3——和`[]`相关的
  • 4. cut 工具
    • 4.1 cut 工具——语法
    • 4.2 cut 工具——使用例子
  • 5.

1 常用命令01篇 和 02篇

1.1 Linux命令01篇——Linux解压缩文件常用命令

  • 解压缩文件常用命令——linux.

1.2 Linux命令02篇——linux日常常用命令介绍

  • linux日常常用命令介绍——实用、简单明了不啰嗦.

2. 正则表达式

  • 注意:不需要用正则的,可以直接看下面非正则的例子。

2.1 基本定义

  • 元字符:
    元字符就是那些在正则表达式中具有特殊意义的专用字符。
    如:*?.(点)等
  • 前导字符:
    前导字符就是位于元字符前面的字符。如:
    • bind* 中,* 前面的字符d就是前导字符
    • sprin.* 中,. 前面的字符n就是前导字符

2.2 正则中常用的元字符

元字符作用示例
^以关键字开头grep '^www.' aa.txt
$以关键字结尾grep '0.0.1$' redis_test.conf
^$匹配空行grep '^$' aa.txt
grep -n '^$' aa.txt
*前导字符出现 0次 或 连续多次grep 'heo*' aa.txt
grep '^hello*' aa.txt
.匹配除了换行符以外的任意单个字符
(位置前后均可放)
grep 'hell.' aa.txt
grep '.hell' aa.txt
.*匹配关键字后面任意长度的任意字符
(位置前后均可放)
grep 'hell.*' aa.txt
grep '.*hell' aa.txt
grep '.*hell$' aa.txt
grep '^hell.*' aa.txt
[]匹配括号里任意单个字符或一组单个字符
[^]匹配不包含括号里任一单个字符
或一组单个字符
^[]
[]$
匹配以括号里任意单个字符
或一组单个字符开头(结尾)
grep ^[hel] aa.txt
grep [hel]$ aa.txt
^[^]
([^]$)
匹配不以括号里任意单个字符
或一组单个字符开头(结尾)

3. grep 工具

3.1 grep 工具使用语法

  • grep 是行过滤工具,用于根据关键字进行过滤。
  • 语法:
    grep [选项] ‘关键字’ 文件名
    
  • 常见选项
    -i :不区分大小写
    -n :显示行号
    -w :按完整单词搜索(单词有误,可能搜索不到)
    -o :只打印出匹配搜索的关键字
    -c :统计匹配关键字出现的行的的次数(行的次数)
    
    -A :显示匹配行及后面多少行
    -B :显示匹配行及前面多少行
    -C :显示匹配行前后多少行
    
    ^key :以关键字开头
    key$ :以关键字结尾
    -v :查找不包含指定内容的行,反向选择
    ^$ :匹配空行
    
    -e :使用正则匹配
    -E :使用扩展正则匹配
    
    -r :逐层遍历目录查找
    
    -l :只列出匹配的文件名
    -L :列出不匹配的文件名
    

3.2 grep工具使用例子

3.2.1 常用选项的使用例子(非正则)

  1. 直接搜索(redis_test.conf 文件中 搜索关键字 redis.io)
    grep 'redis.io' redis_test.conf
    
    在这里插入图片描述
  2. 不区分大小写搜索 -i
    grep -i 'Redis.io' redis_test.conf
    
  3. 搜索并查出关键字所在的行号
    grep -n 'redis.io' redis_test.conf
    grep -n -i 'Redis.io' redis_test.conf
    grep -ni 'Redis.io' redis_test.conf
    
    在这里插入图片描述
  4. 按完整单词搜索(单词拼错可能搜索不出来),用 -w
    grep -w 'binding' redis_test.conf
    
    在这里插入图片描述
  5. 只打印出搜索的关键字,用 -o
    grep -o ' maxmemory ' redis_test.conf
    grep -no ' maxmemory ' redis_test.conf
    
    在这里插入图片描述
  6. 统计匹配关键字出现的行的的次数(注意是:行的次数
    grep -c 'maxmemory2' redis_test.conf
    
    在这里插入图片描述
  7. 前后n行的内容也打印(-A 、-B、 -C)
    • 后面 n 行用: -A
      grep -A 5 '192.168.1.100' redis_test.conf
      
    • 前面 n 行用: -B
      grep -B 5 '192.168.1.100' redis_test.conf
      
    • 前后各 n 行用:-C
      grep -C 2 '192.168.1.100' redis_test.conf
      
      在这里插入图片描述
  8. 关于 -v 的取反操作的例子,看下面的 《3.2.2.1 简单正则例子(开头、结尾、空行)》,放这里了

3.2.2 grep中正则eg1——开头、结尾、空行 和 -v

  1. 搜索以关键字开头的行
    • 以关键字^# bind开头的: ^key
      grep '^# bind' redis_test.conf
      
      在这里插入图片描述
  2. 搜索以关键字结尾的行
    • 以关键字0.0.1结尾的:key$
      grep '0.0.1$' redis_test.conf
      
      在这里插入图片描述
  3. 关于 -v (取反操作)
    • 搜索不含关键字key的行,比如,搜索不含 bind 的行
      grep -v 'bind' redis_test.conf
      
    • 搜索不以key关键字开头的,比如 搜索不以 # bind 开头的:
      grep -v '^# bind' redis_test.conf
      
    • 搜索不以key关键字结尾的,比如搜索不以 0.0.1 结尾的:
      grep -v '0.0.1$' redis_test.conf
      
  4. 匹配空行,用 ^$
    grep '^$' aa.txt
    grep -n '^$' aa.txt
    grep -nv '^$' aa.txt
    
    在这里插入图片描述

3.2.3 grep中正则eg2——*..*

  1. *:前导字符出现 0次 或连续多次。

    • 什么意思呢?比如解释下面的搜索命令
      grep 'heo*' aa.txt
      grep '^hello*' aa.txt
      
      对于第一个命令,它搜索的结果就是:搜索关键字he并且后面紧跟的前导字符o出现0次或连续多次,其实你可以理解为这个搜索等价于 grep 'he' aa.txt,就是直接搜索he,区别就是上面的搜索o会高亮。
    • 演示示例如下,可对比看看
      在这里插入图片描述
      在这里插入图片描述
  2. .:匹配除了换行符以外的任意单个字符
    第一个命令是:好比,忘了一个单词,只记得前几个字母hell,那就按这个方式去搜索,会把以关键字为hell 开头的匹配搜索出来。看下面的例子,一看秒懂:

    grep 'hell.' aa.txt
    grep '.ello' aa.txt
    

    在这里插入图片描述

  3. .* :匹配关键字后面任意长度的任意字符
    看图,秒懂:

    grep 'hell.*' aa.txt
    grep '.*hell' aa.txt
    grep '.*hell$' aa.txt
    grep '^hell.*' aa.txt
    

    在这里插入图片描述

3.2.4 grep中正则eg3——和[]相关的

  1. []:匹配括号里任意单个字符或一组单个字符
    grep [hel] aa.txt
    
  2. [^]:匹配不包含括号里任一单个字符或一组单个字符
    grep [^hel] aa.txt 
    
    在这里插入图片描述
  3. ^[]或者[]$:匹配以括号里任意单个字符或一组单个字符开头
    grep ^[hel] aa.txt
    grep [hel]$ aa.txt
    
    在这里插入图片描述
  4. ^[^]或者[^]$:匹配不以括号里任意单个字符或一组单个字符开头
    都一样,这两就不说了。

4. cut 工具

  • cut工具是列截取工具,用于列的截取。

4.1 cut 工具——语法

  • 语法:
    cut 选项 文件名
    
  • 常用选项:
    -c :以字符为单位进行分割截取
    -d :自定义分隔符,默认为制表符\t
    -f :与 -d 一起使用,指定截取哪个区域
    

4.2 cut 工具——使用例子

  1. -c
    • 语法:
      cut -c startCol,endCol http.txt  # 截取startCol列 到 endCol列的字符
      cut -c startCol- http.txt # 截取startCol开始的所有列
      
    • 使用例子:
      cut -c 1,2 http.txt
      cut -c 2,3 http.txt
      cut -c 2- http.txt | head -2
      
      在这里插入图片描述
  2. -d-f
    • 语法:
      cut -d: -f1 http.txt # 以:号进行分割列,并截取分割后的第一段列
      cut -d. -f1,3 http.txt # 以.号进行分割列,并截取分割后的第一至第三段列
      
    • 使用例子
      cut -d. -f1 http.txt
      cut -d. -f1,3 http.txt | head -2
      cut -d: -f1 http.txt | head -2
      
      在这里插入图片描述

5.

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

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

相关文章

【python】异常详解

注:最后有面试挑战,看看自己掌握了吗 文章目录错误分类捕捉异常实例finally的使用捕捉特定异常抛出异常用户自定义异常🌸I could be bounded in a nutshell and count myself a king of infinite space. 特别鸣谢:木芯工作室 、I…

项目质量管理有哪些不同阶段?其中“质量“指的是什么?

项目质量管理是指在整个项目中管理和保持质量的过程。 "质量 "不是意味着 "完美",通常更多的是指在整个项目中确保质量的一致性。然而,"质量 "的确切含义取决于客户或利益相关者对项目的需求,因此在每个项目可…

Ubuntu开机自动挂载硬盘

查看挂载信息,命令台输入 df -h能够看到/dev/nvme0n1p2是我们要挂在的硬盘,其路径是/media/lkzcswq/Data 找到要挂载磁盘的UUID sudo blkid /dev/nvme0n1p2观察到这个磁盘的UUID为72922DF0922DBA0D,type为ntfs 4. 编辑/etc/fstab文件 #如…

【服务器数据恢复】VMware虚拟机下的SQL Server数据库数据恢复案例

服务器数据恢复环境: 一台某品牌PowerEdge系列服务器和一台PowerVault系列存储,上层是ESXI虚拟机文件,虚拟机中运行SQL Server数据库。 服务器故障: 机房非正常断电导致虚拟机无法启动。管理员检查虚拟机发现虚拟机配置文件丢失&…

一、Java概述

一、Java概述 1.1 版本 Java SE 标准版(核心版本),主要包含Java最核心的库包括:集合,IO,数据库连接、网络编程等 Java EE 企业版,主要用于开发,装配,部署企业级应用包括…

工业机器人编程调试怎么学

很多人觉得工业机器人很难学学,实际上机器人涉及的知识远比PLC要少。现简单说明一下初学者学习工业机器人编程调试的流程,以AUBO机器人为例: 首先我们需要知道工业机器人的调试学起来不难,远比编程更简单,示教器上的编…

基于信息间隙决策理论的碳捕集电厂调度(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

Golang Map原理(底层结构、查找/新增/删除、扩缩容)

参考: 解剖Go语言map底层实现Go语言核心手册-3.字典 一、Go Map底层结构: Go map的底层实现是一个哈希表(数组 链表),使用拉链法消除哈希冲突,因此实现map的过程实际上就是实现哈希表的过程。 先来看下…

react hooks学习记录

react hook学习记录1.什么是hooks2.State Hook3.Effect Hook4.Ref Hook1.什么是hooks (1). Hook是React 16.8.0版本增加的新特性/新语法 (2). 可以让你在函数组件中使用 state 以及其他的 React 特性 貌似现在更多的也是使用函数式组件的了,重要 2.State Hook imp…

Linux系统安装:Zookeeper

目录 Zookeeper的安装 1、环境准备 2、上传 3、解压文件到opt/zookeeper目下 4、安装完后进入zookeeper,找到conf目录 5、复制zoo_sample.cfg 6、编辑zoo.cfg 7、复制一份会话,进入zookeeper安装目录,创建一个文件夹zkdata&#xff0…

使用yeoman根据自己的模板创建一个脚手架

介绍 本文使用的模板并不是通用模板~,是自己构建的模板。内部具体如何选择模板逻辑就没有了,仅仅相当于入门demo实现流程。有兴趣学习脚手架的话yo还是不错的,走完本文逻辑可以试试看抽成自己项目,然后引用至公司~加油&#xff0…

【日常总结】Docker 磁盘占满解决方案

目录 项目背景: 问题描述 原因分析: 解决方案: Step 1:查看硬盘使用情况 Step 2:安装crontab Step 3:编写清理脚本cleardockerlog.sh,并执行一次 Step 4:加入定时任务,并设置…

什么是客户忠诚度?建立忠诚文化的 5 种方法

客户忠诚度影响企业的各个方面,例如收入、品牌形象、预算分配和产品路线图。拥有忠实的客户群对于建立成功的企业至关重要,因为您的客户是您的主要拥护者,有助于为您的企业营造积极的氛围。 什么是客户忠诚度? 客户忠诚度衡量客户…

深入浅出 MyBatis 的一级、二级缓存机制

一、MyBatis 缓存 缓存就是内存中的数据,常常来自对数据库查询结果的保存。使用缓存,我们可以避免频繁与数据库进行交互,从而提高响应速度。 MyBatis 也提供了对缓存的支持,分为一级缓存和二级缓存,来看下下面这张图…

java Object 万字详解 (通俗易懂)

基本介绍构造方法成员方法hashCode()getClass()toString()equals()finalize()JavaBean重写Object类的方法重写toString重写equals一、基本介绍Object类是java类层次最顶层的基类(父类),所有类都是直接或间接继承自Object类,因此&a…

进程概念(详细版)

进程的概念本文主要介绍进程的相关知识 文章目录认识冯诺依曼体系结构操作系统的基本概念操作系统的作用是什么系统调用和库函数相关概念进程基本概念描述进程进程控制块(PCB)task_struct 结构体进程是如何被操作系统管理起来的先描述再组织描述好,组织好&#xff0…

taobao.item.img.delete( 删除商品图片 )

¥开放平台免费API必须用户授权 删除商品图片 公共参数 请求地址: HTTP地址:http://gw.api.taobao.com/router/rest 公共请求参数: 公共响应参数: 请求参数 响应参数 点击获取key和secret 请求示例 TaobaoClient client new DefaultTaobaoClient(url…

学习ifconfig实战技巧,成为网络管理高手

文章目录前言一. ifconfig 命令介绍二. 语法格式及常用选项三. 参考案例3.1 显示网络设备信息3.2 启动和关闭指定的网卡3.3 对指定的网卡设备执行修改IP地址操作3.4 启动和关闭ARP协议3.5 使用ifconfig添加网卡总结前言 大家好,又见面了,我是沐风晓月&a…

Neovim for Rust

之前学习 Rust 一直使用的都是 VScode rust-analyzer,最近看到有网友安利 Neovim 于是就试了试,发现确实美观,好用,而且内存占用比较小。我个人很喜欢,也推荐给给大家。 前提:得有个代理,不然大…

一个自学自动驾驶(决策规划控制方向)的研究生学习资料总结(附相关资料的链接)

项目仓库 欢迎访问我的Github主页 项目名称说明chhCpp学习C仓库chhRobotics学习自动驾驶、控制理论相关仓库(python实现)chhRobotics_CPP学习自动驾驶、控制理论相关仓库(c实现)chhML 、chh-MachineLearning学习机器学习仓库chhRL学习强化学习仓库chhTricks存放一些有意思的t…