数据派
聚焦技术和人文,分享干货,共同成长。
聚焦技术和人文,分享干货,共同成长。
awk
和 sed
是 Linux 系统中两个非常强大且常用的文本处理工具,下面为你详细介绍它们的功能、语法及使用示例。awk
是一种用于处理文本和生成报表的编程语言,它以行为单位、以字段为单位进行文本处理,非常适合对结构化文本进行操作。awk
程序通常由模式(pattern)和动作(action)组成,模式决定何时执行动作,动作则定义要执行的操作。awk 'pattern { action }' file
pattern
:可选参数,用于指定匹配的条件,可以是正则表达式、比较表达式等。如果省略 pattern
,则对所有行执行动作。action
:必选参数,用于指定要执行的操作,通常包含打印、计算等语句。file
:可选参数,指定要处理的文件。如果省略 file
,则从标准输入读取数据。$0
:表示当前处理的整行内容。$1, $2, ...
:分别表示当前行的第 1 个、第 2 个字段,以此类推。NF
:表示当前行的字段数量。NR
:表示当前处理的行号。awk '{ print $1 }' file.txt
file.txt
文件,并打印每行的第一列内容。awk '/pattern/ { print }' file.txt
file.txt
文件中包含 pattern
字符串的所有行。awk '{ sum += $2 } END { print sum }' file.txt
sum
中,处理完所有行后,在 END
块中打印总和。sed
(Stream Editor)是一种流编辑器,用于对文本进行替换、删除、插入等操作。它逐行读取输入文本,根据指定的规则对每行进行处理,并将处理结果输出到标准输出,原文件内容不会被修改,除非使用 -i
选项。sed 'command' file
command
:用于指定要执行的操作,常见的命令有 s
(替换)、d
(删除)、i
(插入)等。file
:可选参数,指定要处理的文件。如果省略 file
,则从标准输入读取数据。sed 's/old/new/g' file.txt
file.txt
文件中每行的所有 old
字符串替换为 new
字符串。其中,s
表示替换命令,g
表示全局替换,如果省略 g
,则只替换每行中第一个匹配的字符串。sed '3d' file.txt
file.txt
文件中的第 3 行。sed '2i\This is a new line.' file.txt
file.txt
文件的第 2 行之前插入一行内容 This is a new line.
。sed 's/[0-9]\+/number/g' file.txt
file.txt
文件中所有连续的数字替换为 number
字符串。sed -e 's/old/new/g' -e '3d' file.txt
-e
选项可以结合多个 sed
命令,该命令会先将 old
替换为 new
,然后删除第 3 行。awk
更侧重于对文本进行数据提取、统计和分析,适合处理结构化文本;而 sed
更擅长对文本进行简单的替换、删除和插入操作,常用于文本的快速修改。在实际使用中,可以根据具体需求选择合适的工具。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
2024-02-22 X86架构与Arm架构区别