深入探讨 Linux 命令行中的筛选方法与技巧

深入探讨 Linux 命令行中的筛选方法与技巧

  • 1. 筛选命令概述
  • 2. 结合筛选的基本方法
    • awk 筛选方法
    • grep 筛选方法
    • find 筛选方法
  • 3. awk、grep 和 find 筛选参数解析
  • 4. awk、grep 和 find 的实用场景
  • 5. 如何将筛选逻辑应用到其他命令
  • 5. 高级组合技巧

在 Linux/Unix 系统中,命令行是一种强大且灵活的工具。它不仅能执行各种系统操作,还能通过巧妙组合和筛选处理复杂的数据和文件。在本文中,我们将详细探讨如何在不同的命令中使用筛选技术来提取我们想要的信息,尤其是如何将这些技术应用到其他命令中,以提高操作效率。

1. 筛选命令概述

Linux 提供了多种处理和筛选命令行输出的工具,它们具有不同的功能,可以单独使用或组合使用来完成特定任务。常见的筛选工具包括:

  • awk:文本处理和模式匹配工具,能够根据条件筛选并处理特定列。
  • grep:通过字符串或正则表达式匹配文本行。
  • find:查找符合特定条件的文件或目录。
  • xargs:将筛选出的结果传递给其他命令进行进一步处理。
  • sed:用于文本编辑、替换以及筛选特定行。

这些工具可以应用于几乎所有命令输出,能够让我们高效地从大量数据中提取所需的内容。通过组合使用这些工具,可以构建强大的命令流水线。

2. 结合筛选的基本方法

awk 筛选方法

awk是用于基于条件筛选文本内容的强大工具,适用于列数据处理。

基本语法:

command | awk '条件 {操作}'

示例1:筛选大于 10G 的文件

du -h --max-depth=1 | awk '$1 ~ /G/ && $1+0 > 10 {print $0}'

这里 $1 ~ /G/ 表示 $1 列含有“G”的文件,$1+0 > 10 则是筛选大于 10G 的文件,{print $2} 输出文件名。

示例2:筛选特定扩展名的文件

ls -lh | awk '$9 ~ /\.log$/ {print $9}'

$9 ~ / \.log$ 匹配文件名($9 列)以 .log 结尾的文件,{print $9} 输出文件名

grep 筛选方法

grep 是一个文本搜索工具,主要用于根据模式匹配筛选行。它支持普通字符串和正则表达式的匹配。

基本语法:

command | grep 'pattern'

示例1:筛选包含特定内容的行

ps aux | grep 'nginx'

查找所有运行中的 nginx 相关进程。

示例2:过滤掉特定的行

ls -lh | grep -v '^d'

过滤掉目录,仅显示文件。

find 筛选方法

find 是用于查找文件的命令,它可以根据文件名、文件大小、修改时间等属性进行筛选。

基本语法:

find path -type f -name "pattern"

示例1:查找大于 10G 的文件

find /path/to/directory -type f -size +10G

该命令查找路径 /path/to/directory 中所有大于 10G 的文件。

示例2:查找指定扩展名的文件

find . -type f -name "*.log"

查找当前目录下所有以 .log 结尾的文件。

3. awk、grep 和 find 筛选参数解析

在实际应用中,这些工具常与特定参数配合使用,以下是几种常见筛选条件及其规律:

参数模式和规律

  1. 字段引用($1、$2、...):awk 中 $1 表示第一列,$2 表示第二列,依此类推。例如 $1 ~ /G/ 表示第一列包含字符 G。

  2. 匹配操作符(~ 和 !~):~ 用于匹配正则表达式,!~ 用于排除。例如 $1 ~ /G/ 筛选含有 “G” 的行,$9 !~ /\.log$/ 则排除 .log 文件。

  3. 条件表达式:
  • $1+0 > 10:将 $1 作为数字与10比较。

  • $3 > 50.0:筛选 CPU 使用率(第三列)大于 50% 的进程。

  • $9 ~ /\.log$/:匹配文件名(第九列)以 .log 结尾。

  1. 组合条件(&& 和 ||):
  • && 表示条件与,所有条件需同时满足。

  • || 表示条件或,只需满足一个条件。

综合示例

筛选大文件并显示信息:

du -h --max-depth=1 | awk '$1 ~ /G/ && $1+0 > 10 {print $2}'

解析:显示第一列含“G”且数值大于10的行(即大于10G的文件)。

筛选高CPU占用进程:

ps aux | awk '$3 > 50.0 {print $1, $2, $3, $11}'

解析:筛选 CPU 占用率(第3列)大于50%的进程,并显示用户、PID、CPU占用和命令。

筛选特定扩展名文件

ls -lh | awk '$9 ~ /\.log$/ {print $9}'

解析:筛选文件名(第9列)以 .log 结尾的行,并输出文件名。

4. awk、grep 和 find 的实用场景

示例:筛选日志文件中的错误信息

在管理服务器时,常常需要从日志文件中提取错误信息。可以使用 grep 和 awk 组合处理:

cat /var/log/syslog | grep "error" | awk '{print $1, $2, $5}'

这个命令提取日志文件中包含 “error” 的行,并显示时间和错误来源。

示例:列出特定时间内修改过的文件

我们可以使用 find 根据时间筛选文件,例如查找 7 天内修改过的文件:

find /path/to/directory -type f -mtime -7

示例:查找并删除大文件

结合 find 和 xargs,可以批量删除大于 10G 的文件:

find /path/to/directory -type f -size +10G | xargs rm

5. 如何将筛选逻辑应用到其他命令

这些筛选方法不仅适用于 du、ls、ps 等常见命令,还可以扩展到其他命令行工具中。

  1. 筛选系统资源监控结果

使用 top 或 ps 监控系统资源时,可以通过 grep 和 awk 来筛选 CPU 或内存占用较高的进程:

ps aux | awk '$3 > 50.0 {print $1, $2, $3, $11}'

这个命令筛选出 CPU 占用率超过 50% 的进程,并打印进程 ID 和命令。

  1. 处理文件系统中的大文件
    可以通过 du 结合 awk 筛选出磁盘占用较大的文件夹:
du -h --max-depth=1 | awk '$1 ~ /G/ && $1+0 > 10 {print $2}'

5. 高级组合技巧

通过将不同的筛选命令结合使用,可以实现更复杂的操作。以下是几个有用的组合示例:

  1. 使用 grep 和 sed 批量修改文件内容

如果需要批量修改包含某些内容的文件,可以结合 grep 和 sed:

grep -rl "old_string" /path/to/files | xargs sed -i 's/old_string/new_string/g'

这个命令递归查找包含 “old_string” 的文件,并将其替换为 “new_string”。

  1. 使用 find 和 xargs 批量删除文件

如果需要删除特定大小的文件,可以结合 find 和 xargs:

find /path/to/directory -type f -size +1G | xargs rm

这个命令删除大于 1GB 的文件。

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

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

相关文章

【虚幻引擎UE】UE5 音频共振特效制作

UE5 音频共振特效制作 一、基础准备1.插件准备2.音源准备 二、创建共感NRT解析器和设置1.解析器选择依据2. 创建解析器3. 创建解析器设置(和2匹配)4.共感NRT解析器设置参数调整5.为共感NRT解析器关联要解析的音频和相应设置 三、蓝图控制1.创建Actor及静…

短剧AI突围战,百度跑偏了

“ 百度短剧的Agent对话功能并不属于颠覆性创新,只是新插件,对短剧行业市场格局影响不大,最多只能算用户痒点。 ” 转载:科技新知 原创 作者丨晓伊 编辑丨蕨影 你是否有过这样的体验? 刷短剧时,因剧情曲…

解决运行jar错误: 缺少 JavaFX 运行时组件, 需要使用该组件来运行此应用程序

报错 众所周知jdk8以上都没有Javafx java -jar target/myyscan-1.0-SNAPSHOT.jar 错误: 缺少 JavaFX 运行时组件, 需要使用该组件来运行此应用程序解决 https://gluonhq.com/products/javafx/ 去下载/javafx/到本地,选择自己的型号 然后记得指定路径 java --m…

TPLCM柔性屏自动化贴合应用

在当前的显示屏制造领域,TP&LCM贴合技术是推动产品升级和满足市场需求的关键环节。随着技术的不断进步,全贴合技术因其卓越的显示效果和用户体验,逐渐成为中高端产品的标配。然而,这一技术的高精度要求和复杂工艺也带来了诸多…

【C++ 算法进阶】算法提升七

目录 正数数组中那两个数&结果最大 (贪心)题目题目分析代码详解 最小相机覆盖问题 (二叉树递归套路)题目题目分析代码详解 拼接字符串 (动态规划 前缀树)题目题目分析代码详解 正数数组中那两个数&…

SpringBoot实现 License 认证(只校验有效期)

文章目录 一、License介绍二、授权者生成密钥对三、授权者生成license.lic证书3.1、 配置pom.xml3.2 、License生成类3.3 、License生成类需要的参数类3.4、自定义KeyStoreParam3.5、main方法生成license.lic注意事项 四、使用者配置4.1、配置pom.xml4.2、License校验类4.3、Li…

室内地图制作-电子地图管理系统源代码公开-室内地图 开源-SDK调用指南(二)

一、室内外电子地图可视化制图项目需求 室内外地图开发需满足开发者可以在Android、iOs、web应用中加入地图相关的功能,包括:地图展示、地图交互、在地图上绘制路线、POI点、搜索、AR导航、蓝牙点位、离线地图等功能。 在开源室内地图编辑-电子地图管理…

Docker安装Mysql5.7,解决无法访问DockerHub问题

Docker安装Mysql5.7,解决无法访问DockerHub问题 简介 Docker Hub 无法访问,应用安装失败,镜像拉取超时的解决方案。 摘要 : 当 Docker Hub 无法访问时,可以通过配置国内镜像加速来解决应用安装失败和镜像拉取超时的…

Apple Vision Pro市场表现分析:IDC最新数据揭示的真相

随着AR/VR技术逐渐成熟并被更多消费者接受,2024年第二季度(Q2)成为这一领域的一个重要转折点。根据国际数据公司(IDC)发布的最新报告,整个AR/VR市场在本季度经历了显著的增长。接下来,我们将深入探讨Apple Vision Pro在这股增长浪潮中的具体表现。 市场背景 2024年Q2,…

第五届光学与图像处理国际学术会议(ICOIP 2025)征稿中版面有限!

第五届光学与图像处理国际学术会议(ICOIP 2025) 2025 5th International Conference on Optics and Image Processing (ICOIP 2025) 重要信息 时间地点:2025年4月25-27日丨中国西安 截稿日期:2024年12月16日23:59 …

maven本地打jar包依赖

本地工程的pom文件中引入了mysql依赖,但是在maven库中没有拉下来,可以到mysql官网下载jar包,使用maven手动打包到本地仓库中: 官网地址:MySQL :: Download MySQL Connector/J (Archived Versions) 在jar包所在位置的路…

揭开C++ STL的神秘面纱之string:提升编程效率的秘密武器

目录 🚀0.前言 🚈1.string 构造函数 🚝1.1string构造函数 🚝1.2string拷贝构造函数 🚈2.string类的使用 🚝2.1.查询元素个数或空间 返回字符串中有效字符的个数:size lenth 返回字符串目…

AI赋能R-Meta分析核心技术:从热点挖掘到高级模型、助力高效科研与论文发表

Meta分析是针对某一科研问题,根据明确的搜索策略、选择筛选文献标准、采用严格的评价方法,对来源不同的研究成果进行收集、合并及定量统计分析的方法,现已广泛应用于农林生态,资源环境等方面,成为Science、Nature论文的…

通过ssh端口反向通道建立并实现linux系统的xrdp以及web访问

Content 1 问题描述2 原因分析3 解决办法3.1 安装x11以及gnome桌面环境查看是否安装x11否则使用下面指令安装x11组件查看是否安装gnome否则使用下面指令安装gnome桌面环境 3.2 安装xrdp使用下面指令安装xrdp(如果安装了则跳过)启动xrdp服务 3.3 远程服务…

混个1024勋章

一眨眼毕业工作已经一年了,偶然进了游戏公司成了一名初级游戏服务器开发。前两天总结的时候,本来以为自己这一年没学到多少东西,但是看看自己的博客其实也有在进步,虽然比不上博客里的众多大佬,但是回头看也算是自己的…

如果自建 ChatGPT,我会如何从 Model、Inference runtime 构建整个系统

ChatGPT 是一个基于 LLM 的对话系统。本文将介绍如何构建一个类似 ChatGPT 的系统,包括从模型、推理引擎到整体架构的构建过程。 系统概览 让我们关注最核心的对话部分。 如上图所示,web 负责与用户进行交互,server 接受用户的对话请求&…

算法的学习笔记—数组中只出现一次的数字(牛客JZ56)

😀前言 在数组中寻找只出现一次的两个数字是一道经典的问题,通常可以通过位运算来有效解决。本文将详细介绍这一问题的解法,深入解析其背后的思路。 🏠个人主页:尘觉主页 文章目录 🥰数组中只出现一次的数字…

【移动应用开发】界面设计(二)实现水果列表页面

续上一篇博客 【移动应用开发】界面设计(一)实现登录页面-CSDN博客 目录 一、采用ViewBinding实现一个RecyclerView 1.1 在app/build.gradle中添加recyclerview依赖,并打开viewBinding (1)在app/build.gradle中添加…

Servlet(三)-------Cookie和session

一.Cookie和Session Cookie和Session都是用于在Web应用中跟踪用户状态的技术。Cookie是存储在用户浏览器中的小文本文件,由服务器发送给浏览器。当用户再次访问同一网站时,浏览器会把Cookie信息发送回服务器。例如,网站可以利用Cookie记住用…

金融工程--pine-script 入门

背景 脚本基本组成 策略实现 实现马丁格尔策略 初始化变量:定义初始资本、初始头寸大小、止损百分比、止盈百分比以及当前资本和当前头寸大小等变量。 更新头寸:创建一个函数来更新头寸大小、止损价格和止盈价格。在马丁格尔策略中,每次亏…