当前位置: 首页 > news >正文

linux指令中的竖线(“|”)是干啥的?【含实例展示】

文章目录

        • 一、管道符的基本概念
        • 二、管道符的核心作用
        • 三、常用实例展示
        • 四、进阶技巧
        • 五、注意事项
        • 总结
      • 实操展示
        • **案例1:统计日志中特定错误的数量**
        • **案例2:查找当前运行的进程**
        • **案例3:合并排序并去重**
        • **案例4:实时监控CPU占用前5的进程**
        • **案例5:远程解压文件**
      • **关键差异总结**


在Linux系统中,竖线 | 被称为管道符(Pipe),它的核心作用是连接两个命令,将前一个命令的输出(stdout)作为后一个命令的输入(stdin)。通过管道符,用户可以灵活组合简单命令,实现复杂的数据处理流程。


一、管道符的基本概念
  1. 语法形式

    命令A | 命令B
    
    • 命令A的输出会直接传递给命令B处理。
    • 管道符是实时传递数据的,无需等待前一个命令完全执行完毕。
  2. 典型场景
    适用于需要多步骤处理数据的场景,例如过滤、排序、统计等。


二、管道符的核心作用
  1. 数据传输
    将命令的输出流定向到另一个命令的输入流。
    实例

    ls -l | less
    
    • ls -l 列出当前目录的详细信息。
    • less 分页显示结果,适合长文本浏览。
  2. 命令串联
    将多个命令串联成数据处理流水线。
    实例

    cat access.log | grep "404" | wc -l
    
    • 统计日志文件中“404错误”出现的次数。
  3. 功能扩展
    通过组合命令,实现单一命令无法完成的功能。
    实例

    ps aux | grep nginx
    
    • 查找所有与 nginx 相关的进程信息。

三、常用实例展示
  1. 文件内容处理
    需求:提取文件中包含关键词的行,并统计数量。

    cat report.txt | grep "error" | sort | uniq -c
    
    • grep "error":过滤出含“error”的行。
    • sort:按字母排序。
    • uniq -c:去重并统计每行出现次数。
  2. 系统监控
    需求:实时监控CPU占用率最高的进程。

    top -b -n 1 | head -n 12 | tail -n 6
    
    • top -b:以批处理模式运行。
    • head -n 12:取前12行(含标题)。
    • tail -n 6:显示排名前5的进程。
  3. 压缩与解压
    需求:直接解压远程服务器上的压缩包。

    ssh user@server "cat /data/backup.tar.gz" | tar -xzvf -
    
    • 通过SSH获取远程压缩包,本地解压。

四、进阶技巧
  1. 结合 xargs
    将管道输出转换为命令行参数。

    find . -name "*.log" | xargs rm -f
    
    • 删除当前目录及子目录下所有 .log 文件。
  2. 重定向与管道混合使用
    保存中间结果的同时传递数据。

    ls -R / | tee all_files.txt | grep ".conf"
    
    • tee:将 ls 的结果同时写入文件并传递给 grep

五、注意事项
  1. 命令顺序敏感
    管道符后的命令必须能处理前一个命令的输出格式。例如,ls | sort 有效,但 ls | vim 无效(vim 需交互输入)。

  2. 性能影响
    频繁使用管道可能增加系统负载,处理大文件时建议优先考虑专用工具(如 awk)。

  3. 仅传递标准输出
    错误流(stderr)默认不通过管道传递,需手动合并:

    command 2>&1 | grep "error"
    

总结

管道符 | 是Linux命令行中最高效的工具之一,通过简单的组合即可实现复杂的数据处理。掌握其用法,能大幅提升运维和开发效率。遇到复杂任务时,不妨先拆解步骤,再通过管道串联命令,往往能事半功倍。

实操展示


以下两组指令分别通过管道符 |非管道方式实现相同功能,展示管道在简化流程中的作用:


案例1:统计日志中特定错误的数量

使用管道

cat error.log | grep "404" | wc -l

等效的非管道方式

grep "404" error.log > temp.txt  # 过滤结果保存到临时文件
wc -l temp.txt                   # 统计临时文件行数
rm temp.txt                      # 删除临时文件

效果:统计 error.log 中“404”错误的总行数。


案例2:查找当前运行的进程

使用管道

ps aux | grep nginx

等效的非管道方式

ps aux > processes.txt           # 输出所有进程到文件
grep nginx processes.txt         # 从文件中筛选目标进程
rm processes.txt                 # 删除临时文件

效果:列出所有与 nginx 相关的进程信息。


案例3:合并排序并去重

使用管道

cat data.txt | sort | uniq

等效的非管道方式

sort data.txt > sorted.txt       # 排序并保存到文件
uniq sorted.txt > unique.txt     # 去重后保存到新文件
cat unique.txt                   # 显示结果
rm sorted.txt unique.txt         # 清理临时文件

效果:输出 data.txt 中排序后且去重的数据。


案例4:实时监控CPU占用前5的进程

使用管道

top -b -n1 | head -n12 | tail -n6

等效的非管道方式

top -b -n1 > top_output.txt      # 输出top信息到文件
head -n12 top_output.txt > temp1.txt  # 取前12行
tail -n6 temp1.txt               # 取后6行(即前5进程)
rm top_output.txt temp1.txt      # 清理临时文件

效果:显示CPU占用率最高的前5个进程。


案例5:远程解压文件

使用管道

ssh user@server "cat backup.tar.gz" | tar -xzvf -

等效的非管道方式

ssh user@server "cat backup.tar.gz" > local_backup.tar.gz  # 下载到本地
tar -xzvf local_backup.tar.gz                              # 本地解压
rm local_backup.tar.gz                                     # 删除本地文件

效果:将远程服务器的压缩包直接解压到本地。


关键差异总结

场景管道方式非管道方式
执行效率数据流实时传递,无中间存储依赖临时文件,需多次I/O操作
资源占用内存占用低,适合大文件处理可能占用磁盘空间,尤其处理大文件时
代码简洁性一行代码完成多步骤操作需分步执行并清理临时文件
适用性适用于需要串联命令的复杂数据处理流程适合简单任务或调试场景

建议:管道符通过减少中间步骤提升效率,但在需要保留中间结果或调试时,非管道方式(如临时文件)更灵活。

相关文章:

linux指令中的竖线(“|”)是干啥的?【含实例展示】

文章目录 一、管道符的基本概念二、管道符的核心作用三、常用实例展示四、进阶技巧五、注意事项总结 实操展示**案例1:统计日志中特定错误的数量****案例2:查找当前运行的进程****案例3:合并排序并去重****案例4:实时监控CPU占用前…...

[HOT 100] 0124. 二叉树中的最大路径和

文章目录 1. 题目链接2. 题目描述3. 题目示例4. 解题思路5. 题解代码6. 复杂度分析 1. 题目链接 124. 二叉树中的最大路径和 - 力扣(LeetCode) 2. 题目描述 二叉树中的 路径 被定义为一条节点序列,序列中每对相邻节点之间都存在一条边。同一…...

[SoC]AXI总线Performance验证方案

AXI总线Performance验证方案 测试 AXI (Advanced eXtensible Interface) 的性能是 SoC 验证中的重要任务,旨在评估其在不同负载和配置下的表现是否满足设计要求。以下详细说明如何测试 AXI 的性能、需要统计的变量、计算方法、在验证环境中动态计算性能的方法,以及如何…...

EMC PowerStore存储学习之一NVMe磁盘的命名规则

PowerStore的日志中经常会看到类似于/dev/nvme1n1的磁盘,在svc_diag list --show_drives中也可以看到类似这样的输出,如下图: 这里的Drives的显示都是 /dev/nvmeXnY的形式,那么这个磁盘命名规则怎么解读呢? 在Linux系…...

apt-mirror搭建ubuntu本地离线源

参考资料 4 Steps to Setup Local Repository in Ubuntu using APT-mirror 使用 APT-mirror 四步配置 Ubuntu 本地软件仓库 ubuntu下的apt-get内网本地源的搭建...

【记录】新Ubuntu20配置voxelmap的环境安装

因为系统总出问题,仅用于个人纪录。 1. 升级CMake到3.28及以上版本(Sophus依赖) wget https://github.com/Kitware/CMake/releases/download/v3.28.3/cmake-3.28.3-linux-x86_64.sh chmod x cmake-3.28.3-linux-x86_64.sh sudo ./cmake-3.2…...

Python全流程开发实战:基于IMAP协议安全下载个人Gmail邮箱内所有PDF附件

在日常办公场景中,面对成百上千封携带PDF附件的邮件,手动逐一下载往往耗时耗力,成为效率瓶颈。如何通过代码实现“一键批量下载”?本文将以**“Gmail全量PDF附件下载工具”**开发为例,完整拆解从需求分析到落地交付的P…...

CPU:AMD的线程撕裂者(Threadripper)和霄龙(EPYC)的区别

AMD的**线程撕裂者(Threadripper)和霄龙(EPYC)**虽然都是面向高性能市场的处理器,但它们在定位、功能和技术规格上有显著区别。以下是两者的主要差异: 1. 目标市场 线程撕裂者(Threadripper&…...

【五一培训】Day 2

注: 1. 本次培训内容的记录将以“Topic”的方式来呈现,用于记录个人对知识点的理解。 2. 由于培训期间,作者受限于一些现实条件,本文的排版及图片等相关优化,需要过一段时间才能完成。 3. 关于老板点评的一些思考 你…...

shell_plus

python manage.py shell_plus 是由 django-extensions 提供的一个增强版的 Django shell,它自动导入你的所有模型和其他一些便捷功能,使得交互式开发更加方便。 如果你遇到配置或运行问题,特别是与 RQ_SHOW_ADMIN_LINK 相关的 ImproperlyCon…...

基于C++、JsonCpp、Muduo库实现的分布式RPC通信框架

⭐️个人主页:小羊 ⭐️所属专栏:RPC框架 很荣幸您能阅读我的文章,诚请评论指点,欢迎欢迎 ~ 目录 项目介绍JsonCpp库简单介绍Muduo库简单介绍C11异步操作——std::future1. 使用 std::async 关联异步任务2. std::packaged_task…...

Redis TLS 加密对性能的影响分析

Redis TLS 加密对性能的影响分析 是的,Redis 启用 TLS 加密确实会对性能产生一定影响,但影响程度取决于多种因素。以下是详细分析: 一、性能影响的主要来源 加密/解密开销‌: TLS 握手过程中的非对称加密(如 RSA、…...

树与二叉树完全解析:从基础到应用

目录 一、树形结构的基础认知 1.1 树的定义与特点 1.2 核心术语解析 二、二叉树的深度解析 2.1 二叉树定义 2.2 特殊二叉树类型 2.3 重要性质总结 三、二叉树的存储与遍历 3.1 存储方式对比 3.2 遍历算法精讲 四、经典题型训练 4.1 相同树判断(LeetCode…...

PostgreSQL:pgJDBC 下载和安装

PostgreSQL 的 pgJDBC 是用于 Java 程序连接和操作 PostgreSQL 数据库的 JDBC 驱动程序。 PostgreSQL:pgJDBC v42.7 下载和安装 点击【Application Stack Builder】 安装目录: 运行 cmd cd D:\PostgreSQL\pgJDBC copy postgresql-42.7.2.jar D:\groovy-…...

正则表达式与文本三剑客grep、sed、awk

目录 一、正则表达式 1.1、字符匹配 1.2、次数匹配 1.3、位置锚定 1.4、分组或其他 二、扩展正则表达式 三、grep 四、awk 4.1、常用命令选项 4.2、工作原理 4.3、基础用法 4.4、内置变量 4.5、模式 4.6、条件判断 4.7、awk中的循环语句 4.8、数组 4.9、脚本 …...

(35)VTK C++开发示例 ---将图片映射到平面2

文章目录 1. 概述2. CMake链接VTK3. main.cpp文件4. 演示效果 更多精彩内容👉内容导航 👈👉VTK开发 👈 1. 概述 与上一个示例不同的是,使用vtkImageReader2Factory根据文件扩展名或内容自动创建对应的图像文件读取器&a…...

每日一题洛谷P8635 [蓝桥杯 2016 省 AB] 四平方和c++

P8635 [蓝桥杯 2016 省 AB] 四平方和 - 洛谷 (luogu.com.cn) 直接暴力枚举,不做任何优化的话最后会TLE一个,稍微优化一下就过了(数据给的还是太良心了) 优化:每层循环用if判断一下,如果大于n就直接跳 当然…...

【python】【UV】一篇文章学完新一代 Python 环境与包管理器使用指南

🐍 UV:新一代 Python 环境与包管理器使用指南 一、UV 是什么? UV 是由 Astral 团队开发的高性能 Python 环境管理器,旨在统一替代 pyenv、pip、venv、pip-tools、pipenv 等工具。 1.1 UV 的主要功能 🚀 极速包安装&…...

6.10.单源最短路径问题-Dijkstra算法

一.BFS算法的局限性: 如上图,BFS算法可以解决无权图的单源最短路径问题, 如果是解决带权图的单源最短路径问题,BFS算法就不适用了,如下图: 如上图,比如求G港到其他顶点的最短路径, …...

Python基于深度学习的网络舆情分析系统(附源码,部署)

大家好,我是Python徐师兄,一个有着7年大厂经验的程序员,也是一名热衷于分享干货的技术爱好者。平时我在 CSDN、掘金、华为云、阿里云和 InfoQ 等平台分享我的心得体会。 🍅文末获取源码联系🍅 2025年最全的计算机软件毕…...

mysql--索引

索引作为一种数据结构,其用途是用于提升检索数据的效率。 分类 普通索引(INDEX):索引列值可重复 唯一索引(UNIQUE):索引列值必须唯一,可以为NULL 主键索引(PRIMARY KEY&a…...

【算法题】荷兰国旗问题[力扣75题颜色分类] - JAVA

一、题目 二、文字解释 1.1 前言 本题是经典的「荷兰国旗问题」,由计算机科学家 Edsger W. Dijkstra 首先提出。如同图中所示的荷兰国旗,其由红、白、蓝三色水平排列组成。在算法领域,该问题可类比为将一个由特定的三种元素(可…...

【数据结构】堆的完整实现

堆的完整实现 堆的完整实现GitHub地址前言堆的核心功能实现重温堆的定义堆结构定义1. 堆初始化与销毁2. 元素交换函数3. 堆化操作向上调整(子→父)向下调整(父→子) 4. 堆元素插入5. 堆元素删除6. 辅助功能函数堆的判空获取堆顶元…...

软考 系统架构设计师系列知识点之杂项集萃(51)

接前一篇文章:软考 系统架构设计师系列知识点之杂项集萃(50) 第80题 设三个煤场A1、A2、A3分别能供应煤7、12、11万吨,三个工厂B1、B2、B3分别需要10、10、10万吨,从各煤场到各工厂运煤的单价(百元/吨&…...

patch命令在代码管理中的应用

patch 是一个用于将差异文件(补丁)应用到源代码的工具,常用于修复 bug、添加功能或调整代码结构。在您提供的代码中,patch 命令通过一系列补丁文件(.patch)修改了 open-amp 库的源代码。 patch 命令的核心作…...

Qt结构体运算符重载指南

在 Qt 中,结构体(struct)或类(class)中重载运算符是一种常见的做法,用于实现自定义类型的逻辑操作(如比较、算术运算等)。以下是一些常见的运算符重载示例和注意事项: 1.…...

基于bert预训练模型的垃圾短信分类系统

文章目录 任务介绍数据说明注意事项数据处理数据准备数据集划分数据集类构建模型构建与训练模型构建模型训练模型推理附录任务介绍 随着移动通信技术的飞速发展,短信(Short Message Service, SMS)已成为人们日常生活中不可或缺的沟通方式之一。然而,垃圾短信(Spam SMS)的…...

[Android] 网易爆米花TV 2.0.0.0429(原网易Filmly,支持多网盘的TV版、电脑版带海报墙播放器)

[Android] 网易爆米花 链接:https://pan.xunlei.com/s/VOPDuQS9D7qixvAnoy7-he2PA1?pwdhzvh# [Android] 网易爆米花TV 2.0.0.0429(原网易Filmly,支持多网盘的TV版、电脑版带海报墙播放器) 详细介绍直接上主页截图,…...

# 前后端分离象棋对战项目开发记录

1. **结构清晰**:使用更直观的标题、分段和列表,增强可读性。 2. **视觉美观**:添加Markdown格式化(如代码块、加粗、斜体),并建议配色和排版风格。 3. **内容精炼**:精简冗余表述,突…...

Android Framework学习二:Activity创建及View绘制流程

文章目录 Window绘制流程Window Manager Service(WMS)SurfaceSurfaceFlinger 安卓View层次结构ActivityPhoneWindowActivity与PhoneWindow两者之间的关系ViewRootImplDecorViewDecorView 的作用DecorView 的结构总结 Activity创建流程View invalidate调用…...

文章五《卷积神经网络(CNN)与图像处理》

文章5:卷积神经网络(CNN)与图像处理——让AI学会"看图说话" 引言:你的AI宠物如何认出猫狗? 想象你的手机突然有了"眼睛",不仅能识别照片里的猫狗,还能告诉你它们的品种&am…...

Ubuntu系统下Firefox浏览器完整指南:故障修复、国内版安装与下载加速

Ubuntu系统下Firefox浏览器完整指南:故障修复、国内版安装与下载加速 一、Firefox无法启动问题修复二、替换国际版安装国内版完整流程准备工作操作步骤验证要点 三、下载延迟问题解决方案现象分析优化配置步骤注意事项 四、进阶技巧补充五、常见问题FAQ 一、Firefox…...

【论文阅读一】掌握高效阅读法,开启学术研究新旅程:S. Keshav教授论文阅读的三遍法

文章目录 一、三遍阅读法1. 初读:10分钟:宏观把握,快速筛选2. 第二遍:1个小时:更仔细的阅读,了解文中论点3. 第三遍:深入理解,注重细节,挑战假设 二、运用三遍阅读法进行…...

多线程编程的常见问题

目录 1. 线程安全和可重入函数问题 2. 死锁的理解 2.1 死锁的概念 2.2 死锁的四个必要条件 3. C中STL容器的线程安全问题 4. C中智能指针的线程安全问题 1. 线程安全和可重入函数问题 线程安全:线程安全是指在多线程环境下,一个函数或者一段代码可…...

算法篇(九)【滑动窗口】

如果在分析一道算法题的时候,发现使用的两个 ”双指针“ , 都是同向的 , 不回退的 , 且一直都在维护 “一段连续的区间” , 此时我们可以考虑使用 “滑动窗口” ! 一、长度最小的子数组 209. 长度最小的子…...

【AI面试准备】传统测试工程师Prompt Engineering转型指南

介绍技能转型:传统测试工程师需掌握Prompt Engineering优化AI输出。如何快速掌握,以及在实际工作中如何运用。 传统测试工程师向AI时代的技能转型,掌握Prompt Engineering(提示工程)已成为提升工作效率、适应智能化测…...

数字智慧方案6186丨智慧应急指挥解决方案(43页PPT)(文末有下载方式)

资料解读:智慧应急指挥解决方案 详细资料请看本解读文章的最后内容。 在当今社会,各类突发事件频发,应急管理工作面临着巨大挑战。智慧应急指挥解决方案应运而生,旨在提升应急管理的效率和水平,保障人民生命财产安全。…...

d202552-sql

一、184. 部门工资最高的员工 - 力扣(LeetCode) 要找到每个部门工资最高的 使用窗口函数 加排序函数 排序函数用rank dense_rank都行 把最高相同的找出来就行 select *, dense_rank() over(partition by departmentId order by Salary desc) as rank …...

cpper 转 java

快速上手 java 特性 文章目录 java 语言特点JVM工作过程组成 java 语言特点 Java 程序编译成字节码,然后由 Java 虚拟机(JVM)执行 不同平台适配相同的 JVM ,从而使得 Java 程序具备跨平台性 —— 一次编写,到处运行 …...

PostgreSQL常用函数

常用函数 数值函数 名称作用AVG(col)列的平均值COUNT(col)列的行数MAX(col)列的最大值MIN(col)列的最小值SUM(col)列值求和 字符串函数 名称作用LENGTH(str)计算字符串长度CONCAT(str1,str2)合并字符串LTRIM(col,str)从字串string的开头删除只包含str(默认空白LTRIM(col))R…...

P2196 [NOIP 1996 提高组] 挖地雷

P2196 [NOIP 1996 提高组] 挖地雷 - 洛谷 题目描述 在一个地图上有N(N ≤ 20)个地窖,每个地窖中埋有一定数量的地雷。同时,给出地窖之间的连接路径。当地窖及其连接的数据给出之后,某人可以从任一处开始挖地雷&#…...

截图软件、画图软件、左右分屏快捷键

截图软件 画图软件 画图时候按字母可以改变颜色:红色r,蓝色b,绿色g,粉色p,橙色o 左右分屏:...

小刚说C语言刷题—1018三角形类别

1.题目描述 输入三个整数,以这三个数为边长,判断是否构成三角形;若不能输出 no 。 若构成三角形,进一步判断它们构的是:锐角三角形或直角三角形或钝角三角形。 分别输出 ruijiao , zhijiao , dunjiao 。 输入 三个…...

【Linux】PetaLinux开发

使用Xilinx的PetaLinux工具编译用于Zynq7020的Linux. 部分图片和经验来源于网络,若有侵权麻烦联系我删除,主要是做笔记的时候忘记写来源了,做完笔记很久才写博客。 专栏目录:记录自己的嵌入式学习之路-CSDN博客 目录 1 一般开发流程 2 离线编译过程 3 系统根文…...

【计算机网络网络层深度解析】从IP协议到路由优化

目录 前言技术背景与价值当前技术痛点解决方案概述目标读者说明 一、技术原理剖析核心概念图解核心作用讲解关键技术模块说明技术选型对比 二、实战演示环境配置要求核心实验实现实验1:IPv6地址配置实验2:OSPF路由配置实验3:NAT转换验证 运行…...

第 12 届蓝桥杯 C++ 青少组中 / 高级组省赛 2021 年真题

一、选择题 第 1 题 题目:下列符号中哪个在 C++ 中表示行注释 ( )。 A. ! B. # C. ] D. // 正确答案:D 答案解析: 在 C++ 中,//用于单行注释(行注释),从//开始到行末的内容会被编译器忽略。选项 A(!)、B(#)、C(])均无注释功能,其中#常用于预处理指令(如#inclu…...

【quantity】5 derive_more库 2.0 版介绍

derive_more 是一个 Rust 过程宏库,旨在通过派生宏自动生成常见 trait 的实现,减少样板代码。2.0 版本带来了多项改进和新特性。 主要特性 1. 支持的 Trait 派生 derive_more 2.0 支持派生以下 trait: 基本操作 trait: Display - 格式化显…...

Qt编译报错:Unexpected compiler version, expected Clang 18.0.0 or newer——Qt安装MSVC编译器

截止到本人所使用的Qt6.6.3为止,Qt尚不支持MSVC2022编译器的默认编译器配制。所以,在Qt构建套件中使用MSVC编译器的话,可能仍需要调整Visual Studio版本,或者手动设置MSVC编译器。 如果你的系统安装的是Visual Studio2022&#x…...

(转)角色与动画的性能优化 | UnrealFest演讲干货

八、蓝图 8.1. Tick 优化的重点关注对象——Tick事件。在不需要的情况下,请默认关闭Tick。 在蓝图中Actor上关掉还不行,Component也需要关掉。 在CPP中,我们可以从PrimaryActorTick或PrimaryComponentTick中关闭Tick。 如果需要Tick&…...

小程序云开发-环境配置

如果点 云开发 没有反应,需要修改软件安装目录不要有中文,但软件名可以是中文: 首次使用,会送1个月的云开发,配置后要等10分钟以后,才可以使用 如果不能选择环境,关掉重新打开一次。 然后记…...