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

Linux管道工具

Linux管道工具(|)是文本处理的瑞士军刀,结合grepawksed可实现高效的数据流转。以下是详细使用指南:

一、管道工具基础

管道符号 | 将前一个命令的输出作为后一个命令的输入,实现流式处理。例如:

cat file.txt | grep "keyword" | awk '{print $1}' | sed 's/old/new/g'

二、核心工具用法

1. grep:文本搜索
  • 基础过滤

    grep "pattern" file.txt         # 查找包含pattern的行
    grep -i "error" server.log       # 忽略大小写
    grep -v "debug" file.txt         # 排除包含debug的行
    
  • 高级技巧

    grep -r "main()" /path/          # 递归搜索目录
    grep -oE "[0-9]+\.[0-9]+" data.txt  # 提取IP地址(正则表达式)
    grep -C3 "error" log.txt         # 显示匹配行及前后3行
    
2. sed:流式编辑
  • 文本替换

    sed 's/old/new/g' file.txt       # 替换所有old为new(不修改原文件)
    sed -i 's/old/new/g' file.txt    # 直接修改文件
    
  • 行操作

    sed '2d' file.txt                # 删除第2行
    sed '/^#/d' config.txt           # 删除注释行
    sed '1i\Header' file.txt         # 在文件首行插入Header
    
  • 模式匹配

    sed '/start/,/end/s/foo/bar/g'   # 在start到end范围内替换foo为bar
    
3. awk:列数据处理
  • 基础列操作

    awk '{print $1, $3}' data.txt    # 打印第1、3列
    awk -F':' '{print $2}' /etc/passwd  # 指定分隔符为冒号
    
  • 条件筛选

    awk '$3 >= 30 {print $0}' data.txt  # 筛选第3列≥30的行
    awk '/ERROR/ {count++} END {print count}' log.txt  # 统计ERROR出现次数
    
  • 计算与统计

    awk '{sum+=$1} END {print sum}' numbers.txt  # 计算第1列总和
    awk 'NR%2==1 {print $0}' file.txt  # 打印奇数行
    

三、组合使用场景

场景1:日志分析
# 提取ERROR/WARNING行,格式化输出并添加前缀
grep -E "ERROR|WARNING" log.txt | 
sed 's/\[.*\] //' |                # 删除时间戳
awk '{print "Alert:", $0}'
场景2:数据清洗
# 提取时间范围日志,删除DEBUG行,并清理前两列
sed -n '/2023-01-01 00:00:00/,/2023-01-01 23:59:59/p' log.txt | 
grep -v "DEBUG" | 
awk '{$1=$2=""; print $0}'         # 删除前两列
场景3:配置转换
# 提取config开头的键,值转大写并格式化
grep "^config" config.txt | 
sed 's/\(config[^=]*\)=\(.*\)/\1=\U\2/' |  # 值转大写
awk -F'=' '{print $1 " → " $2}'
场景4:网络请求分析
# 提取404错误对应的URL
grep " 404 " access.log | 
sed 's/.*GET \([^ ]*\) .*/\1/' |   # 提取URL
awk '{print "Failed:", $0}'

四、高级技巧

  1. 变量传递

    port=8080
    awk -v p="$port" '{print $1 ":" p}' data.txt  # 将shell变量传入awk
    
  2. 性能优化

    • 对大文件使用 grep --line-buffered 减少内存占用。
    • 结合 xargs 处理海量数据:find . -name "*.log" | xargs grep "error"
  3. 正则表达式

    • grep -Esed -r 启用扩展正则(如 grep -E "error|warning")。

五、典型应用场景

  • 日志分析:过滤错误、统计频率、提取上下文。
  • 数据清洗:处理CSV/TSV、转换编码、清洗脏数据。
  • 配置管理:批量修改配置项、生成标准化输出。
  • 自动化报表:从原始数据生成结构化统计结果。

通过灵活组合管道和这三个工具,可实现从简单过滤到复杂数据处理的全方位需求。建议从单命令入手,逐步尝试多命令串联,最终掌握自动化文本处理流程。

http://www.xdnf.cn/news/555301.html

相关文章:

  • 全能签软件的由来和介绍
  • MRVG-Net论文精读
  • Linux周测(一)
  • 龙虎榜——20250520
  • vue3+elementPlus穿梭框拖拽
  • MONA:5%参数微调超越全量微调,CVPR2025新型视觉适配器
  • Linux学习心得问题整理(二)
  • 工业智能网关在工业锅炉安全监控中的组网配置指南
  • C++ QT 与 win32 窗口可以互操作
  • HarmonyOS5云服务技术分享--ArkTS开发函数
  • SpringBootDay1|面试题
  • 环特生物董事长汤珣、执行总经理张勇赴白云美湾国际化妆品研究院集群考察调研
  • ES6核心特性与语法
  • HarmonyOS5云服务技术分享--ArkTS调用函数
  • DAY 30 超大力王爱学Python
  • 2025最新的自动化测试面试题【答案+文档】
  • protobuf原理和使用
  • 接口测试速成指南:基础知识+工具使用全解析
  • 如何使用通义灵码提高前端开发效率
  • 2W+安全事件警示:10次数据泄露,6次与“人”有关
  • GESP2024年12月认证C++二级( 第三部分编程题(1)寻找数字)
  • [python] 轻量级定时任务调度库schedule使用指北
  • 阿里云百炼(1) : 阿里云百炼应用问答_回答图片问题_方案1_提问时上传图片文件
  • 一文深度解析:Pump 与 PumpSwap 的协议机制与技术差异
  • 如何理解大模型的幻觉输出及RAG技术的应用与实战案例
  • 批量替换文字
  • ArcObjects学习教程
  • JAVA基础——输入输出和运算符
  • 迪杰斯特拉
  • RGB-D数据集汇总(2025年05月更新....)