当前位置:首页 > 技术文章 > 正文内容

007 Linux Shell 入门教程(七):文本处理神器 grep、sed、awk 入门

douba317小时前技术文章4


在 Linux 系统中,
文本就是数据。要高效地操作日志、配置文件、或批量处理数据,你必须掌握三个经典命令:grep、sed、awk

它们是系统管理员、数据分析师、运维工程师的“瑞士军刀”。


一、grep:文本搜索专家

1. 基本用法

grep "关键词" 文档名

示例:

grep "ERROR" /var/log/nginx/error.log

2. 常用选项

选项

作用

-i

忽略大小写

-v

取反,显示不匹配的行

-n

显示匹配行的行号

-r

递归搜索目录

-E

支持扩展正则表达式

示例:

grep -i "error" app.log
grep -v "DEBUG" log.txt
grep -rn "TODO" ~/project/

二、sed:流编辑器,适合替换与删除

sed 是一种按行处理的文本编辑器,可用于批量替换、插入、删除文本内容。

1. 替换文本

sed 's/原文/新文/' 文档名

默认只替换每行第一个匹配项。

示例:将 file.txt 中的 "cat" 改为 "dog"

sed 's/cat/dog/' file.txt

替换所有匹配:

sed 's/cat/dog/g' file.txt

2. 原地修改文件(注意备份!)

sed -i 's/cat/dog/g' file.txt

加 -i.bak 可自动备份原文件:

sed -i.bak 's/foo/bar/g' config.cfg

3. 删除行

sed '2d' file.txt        # 删除第2行
sed '/pattern/d' file.txt  # 删除包含关键词的行

三、awk:格式化提取与字段处理专家

awk 以行为单位按字段处理文本,适合从结构化文本中提取特定列、计算数值等。

1. 基本语法

awk '模式 {动作}' 文档名

2. 示例:提取第1列

awk '{print $1}' data.txt

默认按空格或制表符分隔。

3. 示例:提取用户名与登录时间

who | awk '{print $1, $3}'

4. 使用分隔符(如 CSV 文件)

awk -F ',' '{print $2}' file.csv

-F 指定分隔符为逗号。

5. 条件判断

awk '$3 > 80 {print $1, $3}' scores.txt

表示:输出第3列大于80的行的第1列和第3列。


四、三者对比总结

工具

适合场景

强项

语法难度

grep

搜索关键词

过滤/定位

sed

批量修改内容

替换/删除行

awk

提取/分析字段

列处理/格式化


五、综合练习示例

  1. 提取所有包含“error”的日志行并保存到新文件:
grep -i "error" system.log > error_lines.log
  1. 将脚本中的 "localhost" 全部替换成 "127.0.0.1":
sed -i 's/localhost/127.0.0.1/g' script.sh
  1. 从 CSV 文件中提取第二列(用户 ID):
awk -F ',' '{print $2}' users.csv
  1. 统计当前运行进程的数量:
ps aux | awk 'END {print NR-1}'
  1. 提取 /etc/passwd 中用户名和默认 shell:
awk -F ':' '{print $1, $7}' /etc/passwd

六、小结

工具

精通方向

快速记忆法

grep

搜索匹配

“找”

sed

内容替换

“改”

awk

提取/分析

“提”

掌握这三把“文本处理神器”,你就能轻松驾驭日志分析、数据清洗、配置修改等常见任务!


下一篇预告:

Linux Shell 入门教程(八):任务调度与自动化(cron 与 crontab)

下一节,我们将学习如何让脚本自动运行,使用 cron 实现任务定时调度,打造无人值守的自动化系统。

相关文章

Linux的SSH:远程管理与安全性(linux设置ssh远程)

在计算机领域中,远程管理和安全性一直是关键问题。Linux的SSH(Secure Shell)协议就是一种为了解决这些问题而开发的远程登录协议。本文将探讨Linux的SSH协议的基本原理、功能以及安全...

linux的6种查找文件的方法(linux 文件 查找)

学习linux,查找文件也算是一个痛点,尤其是在系统没有开启图形化。Linux作为一个成熟的系统,也提供了多种命令行工具和图形界面工具来帮助我们进行文件搜索和查找。下面是一些常见的查找文件的方法:fi...

Linux 下如何查看进程的资源限制信息?

简介Linux 上的 cat /proc/$pid/limits 命令提供有关特定进程的资源限制的信息,其中 $pid 是相关进程的进程 ID (pid)。该文件是 `/proc 文件系统的一部分,该...

Linux环境中FTP服务的安装与配置(linux服务器安装ftp命令)

简介:FTP ( 文件传输协议 ) 是 互联网常用的网络协议之一 , 它为系统提供了通过网络与远程服务器进行文件传输的简单方法,多个Web站点可以共享一个IP地址。Linux下ftp服务可以通过搭建v...

AMD锐龙处理器启用fTPM后导致Linux出现间歇性卡顿问题

IT之家 2 月 16 日消息,AMD 于 2022 年 3 月承认,锐龙处理器在启用 fTPM(基于固件的可信平台模块)之后,导致 Win10、Win11 系统出现间歇性卡顿问题。这个问题最初仅限于...

Linux常见的网络客户端工具ping/lftp/ftp/lftpget/wget应用示例

以下是Linux中常用的网络工具的带参数和不带参数的功能及详细示例:ping:不带参数功能:使用ping命令可以测试主机之间的连通性。示例:ping google.com,测试与google.com的...