7个Linux搜索和过滤命令

1. grep 命令 – 使用条件匹配搜索文本

Grep是处理文本文件的最强大的工具之一。

语法:

grep [options] pattern [files]

一些有用的 grep 选项:

  • i – 忽略条件中的大小写区别
  • R – 递归搜索子目录
  • c – 只打印匹配行数
  • v – 反转匹配,打印不匹配的行
    它搜索与正则表达式匹配的行并打印它们,例如下面命令将搜索 long.txt 文件中的 “linux”一词,忽略大小写敏感性。
grep -i "linux" long.txt
#等同 cat long.txt | grep -i "linux"

您可以使用-c标志计算与给定条件匹配的次数:

grep -c "linux" long.txt
2

2. awk – 条件扫描和处理语言

awk 命令允许根据指定的条件和操作进行更高级的文本处理。它逐行操作,将每行分割成字段。

语法:

awk 'pattern { action }' input-file

例子:

awk '/error/ {print $1}' /var/log/syslog

这将打印任何包含 “error” 的行的第一个字段。awk 还可以使用 NR (行数)和 NF (字段数)等内置变量。

[root@xx]# cat linux.txt 
Linux
Linux
linux1 linux3 linux6 linux8
Linux9
[root@xx]# awk "/lin/ {print NR}" linux.txt 
3
[root@xx]# awk "/lin/ {print NF}" linux.txt 
4

awk 高级功能包括:

  • 字段数学计算
  • 条件语句
  • 用于处理字符串、数字和日期的内置函数
  • 输出格式控制

awk 的功能非常强大,因为它是一种独立的编程语言,作为 Linux 命令,它可以给你很多控制权。详细学习请参考 Linux awk 命令 | 菜鸟教程

3. sed – 用于过滤和转换文本的流编辑器

sed 命令允许过滤和转换文本。它可以执行搜索/替换、删除、移位等操作。不过,与 awk 不同的是,sed 是为按指令逐行编辑而设计的。

语法:

sed options 'commands' input-file

例子:

sed 's/foo/bar/' file.txt

这会将 file.txt 中的 “foo” 替换为 “bar”。

一些有用的 sed 命令:

  • s – 搜索和替换文本
  • /pattern/d – 删除与模式匹配的行
  • 10,20d – 删除第 10-20 行
  • 1,3!d – 删除除 1-3 行以外的所有行 (‘1,3!d’,需单引号,双引号需要反斜杠\转换,因为Bash shell下!字符有特殊意义,被解释为历史命令扩展。)

sed 非常适合批量查找/替换、选择性删除行和其他文本流编辑操作。

sed 's/Linux/linux/' linux.txt > linux.txt2

4. sort – 对文本文件行进行排序

当你处理大量文本或数据,甚至是从其他命令输出的大量内容时,排序是使事情易于管理的好方法。sort 命令将按字母或数字对文本文件的行进行排序。

语法:

sort [options] [file]

有用的 sort 选项:

  • n – 按数字而不是字母排序
  • r – 反转排序顺序
  • k – 根据特定字段或列排序

例子:

sort -n grades.txt

这将对 grades.txt 中的内容进行数字排序。排序便于对文件内容进行排序,使输出或分析更具可读性。

sort -k 是 sort 命令的一个选项,用于指定要排序的字段(列)。

语法格式为:sort -k <起始位置>[,<结束位置>]

其中 <起始位置> 指定了要排序的字段起始位置,<结束位置>(可选)指定了字段的结束位置。字段起始位置和结束位置都是以 1 开始的数字。

以下是一些示例来帮助说明 -k 选项的用法:

  • sort -k 2:按照第二个字段进行排序。
  • sort -k 2,5:按照从第二个字段到第五个字段的范围进行排序。
  • sort -k 3,3:按照第三个字段进行排序。
  • sort -k 2,2n:按照第二个字段的数值大小进行排序。
  • sort -k 2,2nr:按照第二个字段的逆序(从大到小)数值大小进行排序。

通过使用 -k 选项,你可以指定要排序的字段范围,还可以使用额外的选项来控制排序方式(如按照数值大小或逆序排序)。

[root@xx]# cat linux.txt
test 30  
Hello 95  
Linux 85 
[root@xx]# sort -k 2 linux.txt
test 30  
Linux 85 
Hello 95  

5. uniq – 报告或省略重复行

uniq 命令可从输入中过滤重复的相邻行。该命令通常与排序命令一起使用。

语法:

uniq [options] [input]

选项:

  • c – 以出现次数作为唯一行的前缀。
  • d – 只显示重复行,不显示唯一行。

例子:

sort data.txt | uniq

这将删除排序后 data.txt 中的任何重复行。uniq 可让你控制重复文本的过滤。

6. diff – 逐行比较文件

diff 命令逐行比较两个文件并打印差异。它通常用于显示文件版本之间的变化。语法

语法:

diff [options] file1 file2

选项:

  • b – 忽略空白处的更改。
  • B – 在行内显示差异,高亮显示更改。
  • u – 用三行上下文输出差异。
    例子:
diff original.txt updated.txt

这将输出 original.txt 和 updated.txt 之间的不同行。 diff 对于比较文本文件和源代码的修订版本非常有用。

7. wc – 打印行数、字数和字节数

wc (字数统计)命令打印文件中的行数、字数和字节数。

语法:

wc [options] [file]

选项:

  • l – 只打印行计数。
  • w – 只打印字数。
  • c – 仅打印字节数。
    例子:
wc report.txt

该命令将打印 report.txt 中的行数、字数和字节数。

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

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

相关文章

Android平台RTMP推送|轻量级RTSP服务|GB28181设备接入模块之实时快照保存JPG还是PNG?

JPG还是PNG&#xff1f; JPG和PNG是两种常见的图片文件格式&#xff0c;在压缩方式、图像质量、透明效果和可编辑性等方面存在显著差异。 压缩方式&#xff1a;JPG是一种有损压缩格式&#xff0c;通过丢弃图像数据来减小文件大小&#xff0c;因此可能会损失一些图像细节和质量…

【AIGC】IP-Adapter:文本兼容图像提示适配器,用于文本到图像扩散模型

前言 IPAdapter能够通过图像给Stable Diffusion模型以内容提示&#xff0c;让其生成参考该图像画风&#xff0c;可以免去Lora的训练&#xff0c;达到参考画风人物的生成效果。 摘要 通过文本提示词生成的图像&#xff0c;往往需要设置复杂的提示词&#xff0c;通常设计提示词变…

系列十一、Spring Security登录接口兼容JSON格式登录

一、Spring Security登录接口兼容JSON格式登录 1.1、概述 前后端分离中&#xff0c;前端和后端的数据交互通常是JSON格式&#xff0c;而Spring Security的登录接口默认支持的是form-data或者x-www-form-urlencoded的&#xff0c;如下所示&#xff1a; 那么如何让Spring Securi…

Centos常用命令整理,常用的比较全了

目 录 1、更改文件拥有者 2、修改权限 3、修改⽂件⽇期 4、链接⽂件 5、⽇期操作 6、显⽰⽇历 7、显⽰⽂件头部 8、显⽰⽂件尾部 9、显⽰⽤户标识 10、查看当前登录的⽤户 11、显⽰都谁登录到机器上 12、显⽰当前终端上的⽤户名 13、寻找⽂件…

Open3D 反算点云缩放系数(21)

Open3D 反算点云缩放系数(21) 一、算法介绍二、算法实现1.方法12.方法2(通用)一、算法介绍 上一章按照指定的系数,对点云进行了等比例缩放,这里输入缩放后的两块点云,反算二者之间的缩放系数。 二、算法实现 已知使用的俩点云是1/2的缩放关系,用于验证计算结果是否…

redis五大基础数据类型的操作指令及示例

前言 近期回顾了Redis方面的技术&#xff0c;本文就redis的5大基础数据类型的指令做了一个总结并附上示例 一、Redis是什么&#xff1f; Redis是一种开源的内存数据库&#xff0c;它被用作缓存、消息代理和键值存储。它支持多种数据结构&#xff0c;如字符串、哈希、列表、集…

【数据结构】串,数组,广义表 | 笔记整理 | C/C++实现

文章目录 前言一、串1.1、串的定义1.2、案例引入1.3、串的类型定义和存储结构1.4、串的模式匹配算法1.4.1、BF算法1.4.2、KMP算法 二、数组2.1、数组的定义2.2、数组的抽象数据类型定义2.3、数组的顺序存储2.4、特殊矩阵的压缩存储 三、广义表四、病毒案例 前言 参考视频&…

Spring Security实现详解

一、WebSecurityConfigurerAdapter 总配置类&#xff1a; 1、介绍&#xff1a;配置类 2、主要方法&#xff1a; &#xff08;1&#xff09;configure&#xff08;HttpSecurity http&#xff09; protected void configure(HttpSecurity http) throws Exception {this.logge…

【C++】wxWidgets库实现窗体程序

一、安装wxWidgets库 在Debian系统上使用wxWidgets库来创建一个基本的窗体程序&#xff0c;首先需要确保已经安装了wxWidgets相关的库和开发工具。下面是安装wxWidgets的步骤&#xff1a; 打开终端&#xff0c;使用下述命令安装wxWidgets库及其开发文件&#xff1a; sudo ap…

etcd官方docker镜像及dockerfile问题处理

解决下我之前etcd使用docker镜像启动的坑 1、问题镜像docker-file&#xff1a; 这个dockerfile看着看不出来问题&#xff0c;但如果有人真的执行我之前两篇文章的文件&#xff0c;就会有问题&#xff0c;什么问题呢&#xff0c;无法连接到etcd&#xff0c;由于我是刚装上dock…

11k+star 开源笔记应用真香 centos部署教程

leanote binary installation on Mac and Linux (En) life edited this page on Jul 21, 2017 10 revisions Pages 26 Home How to develop leanote 如何开发leanote How to install leanote on Ubuntu? How to Upgrade Leanote Install Mongodb leanote api leanote …

js页面输出的方式

JavaScript 可以通过以下方式在页面中输出内容&#xff1a; 使用 document.write() 方法&#xff0c;将文本字符串直接写入 HTML 文档中。 document.write("Hello World!");使用 innerHTML 属性&#xff0c;向元素的内部插入 HTML 代码。 document.getElementById(&…

开源监控服务一瞥:Prometheus、Grafana、Zabbix、Nagios、Icinga和Open-Falcon

前言 随着信息技术的发展&#xff0c;监控服务在维护系统稳定性和性能方面变得越来越重要。本文将比较一些流行的开源监控服务&#xff0c;以帮助你选择适合你需求的解决方案。 监控服务对比 监控服务特点优势不足性能扩展性安全性Prometheus- 多维度数据模型- 监控容器化环…

MySQL之导入、导出远程备份

一、Navicat工具导入、导出 1.1 导入 第一步&#xff1a; 右键&#xff0c;点击运行SQL文件 第二步&#xff1a; 选择要运行的SQL&#xff0c;点击开始 第三步&#xff1a; 关闭即可 1.2 导出 第一步&#xff1a; 右键选择&#xff0c;导出向导 第二步&#xff1a; 选择SQL脚…

1.3MATLAB变量及其操作

变量 变量是内存单元的一个抽象&#xff0c;在MATLAB中&#xff0c;变量以字母开头&#xff0c;后接数字下划线构成&#xff0c;MATLAB中变量名最多占据 63 个字符。变量区分大小写标准函数及命令一般使用小写字母 赋值语句 变量 表达式(;)表达式(;)总结&#xff1a;加分号&…

C++ 实现游戏(例如MC)键位显示

效果&#xff1a; 是不是有那味儿了&#xff1f; 显示AWSD&#xff0c;空格&#xff0c;Shift和左右键的按键情况以及左右键的CPS。 彩虹色轮廓&#xff0c;黑白填充。具有任务栏图标&#xff0c;可以随时关闭字体是Minecraft AE Pixel&#xff0c;如果你没有装&#xff08;大…

约瑟夫环问题解决

链表 struct List {int data;struct List* next; }创建链表 单链表 实现 struct List* listCreate() {int data;struct List* head NULL;struct List* pre NULL;struct List* current NULL;while(scanf("%d",&data) && data ! -1){current (stru…

使用numpy处理图片——灰阶影像

大纲 载入图像灰阶处理lightnessaverageluminosity 灰阶&#xff08;Gray scale&#xff09;影像是每个像素只有一个采样颜色的图像。 载入图像 import numpy as np import PIL.Image as Imageimg Image.open(lena.png) data np.array(img)灰阶处理 我们有三种方法来生成这…

Linux中常使用的命令之ls、cd、pwd、mkdir、rmdir

ls: 列出目录 cd&#xff1a;切换目录 pwd&#xff1a;显示目前的目录 mkdir&#xff1a;创建一个新的目录 -m &#xff1a;配置文件的权限-p &#xff1a;帮助你直接将所需要的目录(包含上一级目录)递归创建起来&#xff01; rmdir&#xff1a;删除一个空的目录 注意这…

基本数据结构 | 并查集

基本介绍 并查集主要实现两个操作&#xff1a; 合并两个集合查询某个元素的祖宗节点 并查集的两个优化&#xff1a; 路径压缩&#xff1a; O ( l o g n ) O(logn) O(logn)按秩合并&#xff1a; O ( l o g n ) O(logn) O(logn)&#xff0c;代码比较复杂&#xff0c;一般不单…