Linux awk和sed命令的详解?

awk 和 sed 是 Linux 系统中两个非常强大且常用的文本处理工具,下面为你详细介绍它们的功能、语法及使用示例。

awk 命令

基本介绍

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 命令

基本介绍

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 更擅长对文本进行简单的替换、删除和插入操作,常用于文本的快速修改。在实际使用中,可以根据具体需求选择合适的工具。

posted on   数据派  阅读(6)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
历史上的今天:
2024-02-22 X86架构与Arm架构区别
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

点击右上角即可分享
微信分享提示