linux中sed和awk有什么区别

区别:1、sed是流编辑器,而awk是文本格式化工具,报告生成器;2、awk适合对文件进行抽取整理,sed适合对文件进行编辑;3、sed读取一行数据,会以行作为单位进行处理,而awk读取一行,会切割成字段,以字段(列)为单位,进行细节处理。

linux中sed和awk有什么区别

本教程操作环境:CentOS 6系统、Dell G3电脑。

awk

awk是一种程序语言,对文档资料的处理具有很强的功能。awk擅长从格式化报文或从一个大的文本文件中抽取数据。

awk 命令是逐行扫描文件(从第 1 行到最后一行),寻找含有目标文本的行,如果匹配成功,则会在该行上执行用户想要的操作;反之,则不对行做任何处理。

awk 命令的基本格式为:

awk [选项] '脚本命令' 文件名

此命令常用的选项以及各自的含义,如表 1 所示。

       表 1 awk 命令选项以及含义                选项                含义

               -F fs               指定以 fs 作为输入行的分隔符,awk 命令默认分隔符为空格或制表符。               -f file               从脚本文件中读取 awk 脚本指令,以取代直接在命令行中输入指令。               -v var=val               在执行处理过程之前,设置一个变量 var,并给其设备初始值为 val。

awk 的强大之处在于脚本命令,它由 2 部分组成,分别为匹配规则和执行命令,如下所示:

'匹配规则{执行命令}'

这里的匹配规则,和 sed 命令中的 address 部分作用相同,用来指定脚本命令可以作用到文本内容中的具体行,可以使用字符串(比如 /demo/,表示查看含有 demo 字符串的行)或者正则表达式指定。另外需要注意的是,整个脚本命令是用单引号(”)括起,而其中的执行命令部分需要用大括号({})括起来。

在 awk 程序执行时,如果没有指定执行命令,则默认会把匹配的行输出;如果不指定匹配规则,则默认匹配文本中所有的行。

举个简单的例子:

[root@localhost ~]# awk '/^$/ {print "Blank line"}' test.txt

在此命令中,/^$/ 是一个正则表达式,功能是匹配文本中的空白行,同时可以看到,执行命令使用的是 print 命令,此命令经常会使用,它的作用很简单,就是将指定的文本进行输出。因此,整个命令的功能是,如果 test.txt 有 N 个空白行,那么执行此命令会输出 N 个 Blank line。

sed

sed 命令采用的是流编辑模式,最明显的特点是,在 sed 处理数据之前,需要预先提供一组规则,sed 会按照此规则来编辑数据。

sed 会根据脚本命令来处理文本文件中的数据,这些命令要么从命令行中输入,要么存储在一个文本文件中,此命令执行数据的顺序如下:

每次仅读取一行内容;

根据提供的规则命令匹配并修改数据。注意,sed 默认不会直接修改源文件数据,而是会将数据复制到缓冲区中,修改也仅限于缓冲区中的数据;

有道小P 有道小P

有道小P,新一代AI全科学习助手,在学习中遇到任何问题都可以问我。

有道小P 64 查看详情 有道小P

将执行结果输出。

当一行数据匹配完成后,它会继续读取下一行数据,并重复这个过程,直到将文件中所有数据处理完毕。

sed 命令的基本格式如下:

sed [选项] [脚本命令] 文件名

该命令常用的选项及含义,如表 1 所示。

       表 1 sed 命令常用选项及含义                选项                含义

               -e 脚本命令               该选项会将其后跟的脚本命令添加到已有的命令中。               -f 脚本命令文件               该选项会将其后文件中的脚本命令添加到已有的命令中。               -n               默认情况下,sed 会在所有的脚本指定执行完毕后,会自动输出处理后的内容,而该选项会屏蔽启动输出,需使用 print 命令来完成输出。               -i               此选项会直接修改源文件,要慎用。

成功使用 sed 命令的关键在于掌握各式各样的脚本命令及格式,它能帮你定制编辑文件的规则。

sed和awk的区别

sed是流编辑器,而awk是文本格式化工具,报告生成器

如果文件是格式化的,即由分隔符分为多个域的,优先使用awk

awk适合对文件的抽取整理,sed适合对文件的编辑。

awk适合按列(域)操作,sed适合按行操作

sed:每次读入一行来处理的,sed 适合简单的文本替换和搜索,sed读取一行,以行作为单位,进行处理。

awk:每次读入一行来处理的(同sed),但awk读取一行,切割成字段,以字段(列)为单位,进行细节处理。

相关推荐:《Linux视频教程》

以上就是linux中sed和awk有什么区别的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/258385.html

赞 (0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
名人朋友圈如何对戏
上一篇 2026年10月10日 21:53:07
Maxthon浏览器官方下载入口 Maxthon浏览器登录地址大全
下一篇 2025年11月28日 14:52:00

相关推荐

  • linux中less和more的区别有哪些

    linux中less和more的区别有哪些linux中less和more的区别有哪些linux中less和more的区别有哪些linux中less和more的区别有哪些

    区别:1、less可以按上下方向键来显示上下内容,而more不能通过上下方向键控制显示;2、less不必读整个文件,加载速度比more更快;3、less退出后shell不会留下刚显示的内容,而more退出后会在shell上留下刚显示的内容。 本教程操作环境:CentOS 6系统、Dell G3电脑。…

    2026年10月10日 • 用户投稿
    100
  • linux中条件变量和信号量有什么区别

    linux中条件变量和信号量有什么区别linux中条件变量和信号量有什么区别linux中条件变量和信号量有什么区别linux中条件变量和信号量有什么区别

    区别:1、使用条件变量可以一次唤醒所有等待者,而信号量不能唤醒;2、信号量始终有一个值(状态),而条件变量是没有值的,没有地方记录发送信号的次数,也没有地方记录wait返回的次数;3、信号量的意图在于进程间同步,条件变量意图在于线程间同步。 本教程操作环境:linux5.9.8系统、Dell G3电…

    2026年10月10日 • 用户投稿
    000
  • linux字符设备有哪些

    linux字符设备有哪些linux字符设备有哪些linux字符设备有哪些linux字符设备有哪些

    linux字符设备有:1、鼠标,是计算机的一种外接输入设备,也是计算机显示系统纵横坐标定位的指示器;2、键盘,是用于操作计算机设备运行的一种指令和数据输入装置;3、串行端口终端,使用计算机串行端口连接的终端设备;4、控制终端;5、控制台等。 本教程操作环境:linux5.9.8系统、Dell G3电…

    2026年10月10日 • 用户投稿
    000
  • linux自带vim吗

    linux自带vim吗linux自带vim吗linux自带vim吗linux自带vim吗

    linux有多种发行版,不是都自带vim的。vi是最基本的文本编辑器,每个Linux发行版都会自带vi;而vim是vi的增强版本,不是每个发行版都会自带,需要手动安装;可通过执行“yum -y install vim”命令来进行全自动安装。 本教程操作环境:CentOS 8系统、Dell G3电脑。…

    2026年10月10日 • 用户投稿
    000
  • linux系统的帐号文件由哪些组成

    linux系统的帐号文件由哪些组成linux系统的帐号文件由哪些组成linux系统的帐号文件由哪些组成linux系统的帐号文件由哪些组成

    帐号文件由5个部分组成:1、“/etc/passwd”,系统用户配置文件,存储了系统中所有用户的基本信息;2、“/etc/shadow”,存储了系统中用户的密码信息;3、“/ect/group”,用户组配置文件,存储了用户组的所有信息等等。 本教程操作环境:linux5.9.8系统、Dell G3电…

    2026年10月10日 • 用户投稿
    500
  • Ubuntu 20.04 Debian 9/10 开启Google BBR的方法

    摘要 BBR是Google开发的开源TCP BBR拥塞控制算法,旨在提升网络连接速度,其优化效果显著。BBR适用于内核版本4.9及以上的系统,如Ubuntu 18.04/20.04、CentOS 8和Debian 9/10,这些系统无需更换内核即可直接启用BBR。 正文 一、使用/安装 如果你使用的…

    2026年10月10日
    000
  • linux df和fdisk有什么区别

    linux df和fdisk有什么区别linux df和fdisk有什么区别linux df和fdisk有什么区别linux df和fdisk有什么区别

    区别:1、fdisk可输出分区内容,也可删除或新增分区,而df只能输出分区的使用情况;2、fdisk偏向操作性,而df是查看浏览的命令;3、查看项目时,fdisk查看的内容侧重于分区表的信息,而df侧重于显示当前系统中所有文件系统的信息。 本教程操作环境:linux5.9.8系统、Dell G3电脑…

    2026年10月10日 • 用户投稿
    000
  • linux不能用ipconfig怎么办

    linux不能用ipconfig怎么办linux不能用ipconfig怎么办linux不能用ipconfig怎么办linux不能用ipconfig怎么办

    解决方法:1、检查“/sbin”下有没有ifconfig,若没有则系统没有安装;2、执行“yum search ifconfig”搜索ifconfig包;3、执行“yum install net-tools.x86_64”命令进行安装即可。 本教程操作环境:linux5.9.8系统、Dell G3电…

    2026年10月10日 • 用户投稿
    1000
  • linux怎么查看有几个用户登录

    linux怎么查看有几个用户登录linux怎么查看有几个用户登录linux怎么查看有几个用户登录linux怎么查看有几个用户登录

    查看方法:1、利用w命令,该命令用于显示目前登录系统的用户信息,语法为“w [-fhlsuV][用户名称]”;2、利用who命令,该命令用于显示系统中有哪些使用者正在上面,语法为“who [参数]”。 本教程操作环境:linux7.3系统、Dell G3电脑。 linux怎么查看有几个用户登录 1、…

    2026年10月10日 • 用户投稿
    100
  • Composer如何清理缓存_释放磁盘空间与解决缓存问题

    Composer如何清理缓存_释放磁盘空间与解决缓存问题Composer如何清理缓存_释放磁盘空间与解决缓存问题Composer如何清理缓存_释放磁盘空间与解决缓存问题Composer如何清理缓存_释放磁盘空间与解决缓存问题

    清理缓存可释放磁盘空间并解决依赖问题,主要通过composer clear-cache命令或手动删除缓存目录实现,定期清理和使用–prefer-dist参数有助于减少缓存占用。 Composer 清理缓存主要目的是释放磁盘空间,解决一些依赖更新问题。简单来说,就是让 Composer 忘…

    2026年10月10日 • 用户投稿
    100
  • 兆芯KX-7000加持!MAXHUB AI+电脑评测:信创电脑与AI的完美融合

    兆芯KX-7000加持!MAXHUB AI+电脑评测:信创电脑与AI的完美融合兆芯KX-7000加持!MAXHUB AI+电脑评测:信创电脑与AI的完美融合兆芯KX-7000加持!MAXHUB AI+电脑评测:信创电脑与AI的完美融合兆芯KX-7000加持!MAXHUB AI+电脑评测:信创电脑与AI的完美融合

    一、前言:兆芯驱动的智能办公新纪元 在人工智能浪潮席卷各行各业的当下,办公设备正经历一场深刻的转型——从传统的“操作工具”逐步演变为“智能生产力核心”。这一转变涉及硬件架构革新、软件生态重构、人机交互升级以及场景化应用深化,全面推动办公效率与协作模式的跃迁。 在大众认知中,运行各类Linux系统的信…

    2026年10月10日 • 用户投稿
    000
  • linux中unzip找不到命令怎么办

    linux中unzip找不到命令怎么办linux中unzip找不到命令怎么办linux中unzip找不到命令怎么办linux中unzip找不到命令怎么办

    解决方法:1、利用“yum list | grep zip/unzip”获取软件安装列表,没有结果说明没有安装;2、利用“yum install zip”命令安装zip;3、利用“yum install unzip”命令安装unzip即可。 本教程操作环境:linux7.3系统、Dell G3电脑。…

    2026年10月10日 • 用户投稿
    000
  • linux中grep怎么查找不包含

    linux中grep怎么查找不包含linux中grep怎么查找不包含linux中grep怎么查找不包含linux中grep怎么查找不包含

    在linux中,可以利用grep命令的“-v”参数来查找不包含,grep命令用于查找文件中符合条件的字符串,当参数设置为“-v”时,表示反向选择,显示不包含匹配文本的所有行,语法为“grep -v 不包含的字符串 文件名”。 本教程操作环境:linux7.3系统、Dell G3电脑。 linux中g…

    2026年10月10日 • 用户投稿
    000
  • linux中awk和sed有什么区别

    linux中awk和sed有什么区别linux中awk和sed有什么区别linux中awk和sed有什么区别linux中awk和sed有什么区别

    linux中awk和sed的区别:1、sed是一种非交互式且面向字符流的编辑器,awk是一门模式匹配的编程语言;2、sed常用于数据修改,awk常用于数据切片和数据格式化;3、sed一般对行进行操作,awk一般对列进行操作。 本教程操作环境:linux7.3系统、Dell G3电脑。 linux中a…

    2026年10月10日 • 用户投稿
    200
  • 一键PHP环境出现500错误怎么办_500错误常见解决办法

    先检查错误日志定位问题,再依次排查PHP语法错误、文件权限、.htaccess配置及PHP扩展与内存限制,多数500错误可快速解决。 遇到一键PHP环境出现500错误时,不要慌。500错误是服务器内部错误的通用提示,通常说明服务器在处理请求时遇到了问题,但没有具体说明原因。以下是几种常见且有效的排查…

    2026年10月10日
    100
  • linux防火墙查看状态firewall、iptable[通俗易懂]

    linux防火墙查看状态firewall、iptable[通俗易懂]linux防火墙查看状态firewall、iptable[通俗易懂]linux防火墙查看状态firewall、iptable[通俗易懂]linux防火墙查看状态firewall、iptable[通俗易懂]

    大家好,欢迎再次光临,我是你们的朋友全栈君。 CentOS7的防火墙配置与之前的版本有显著差异,CentOS7默认采用的是firewall,而CentOS 6.x则使用iptables。 一、iptables防火墙1、基本操作 # 查看防火墙状态service iptables status # 停…

    2026年10月10日 • 用户投稿
    600
  • linux中bashrc文件在哪

    linux中bashrc文件在哪linux中bashrc文件在哪linux中bashrc文件在哪linux中bashrc文件在哪

    在linux中,bashrc文件在“/home”目录下,也即用户的主目录下;该文件是一个隐藏文件,用于存储并加载系统的终端配置和环境变量,可以用“ls -a”命令查看,用“find -name .bashrc”命令查找文件在什么位置。 本教程操作环境:linux7.3系统、Dell G3电脑。 li…

    2026年10月10日 • 用户投稿
    100
  • linux删除权限不够怎么办

    linux删除权限不够怎么办linux删除权限不够怎么办linux删除权限不够怎么办linux删除权限不够怎么办

    linux删除权限不够的解决方法:1、使用“chmod 777 文件名”,给文件添加读写权限即可删除;2、使用root身份,利用“cd 路径”配合“rm -rf 需要删除的文件或文件夹”命令删除即可。 本教程操作环境:linux7.3系统、Dell G3电脑。 linux删除权限不够怎么办 第一种:…

    2026年10月10日 • 用户投稿
    600
  • linux僵尸进程杀不死怎么办

    linux僵尸进程杀不死怎么办linux僵尸进程杀不死怎么办linux僵尸进程杀不死怎么办linux僵尸进程杀不死怎么办

    linux僵尸进程杀不死的解决方法:1、利用cat命令,查看僵尸进程的父进程id,语法为“cat /proc/僵尸进程的进程号/status”;2、利用kill命令,将父进程给杀死即可,语法为“kill -9 父进程的进程号”。 本教程操作环境:linux7.3系统、Dell G3电脑。 linux…

    2026年10月10日 • 用户投稿
    200
  • Java中如何调用Shell 掌握Runtime.exec

    Java中如何调用Shell 掌握Runtime.execJava中如何调用Shell 掌握Runtime.execJava中如何调用Shell 掌握Runtime.execJava中如何调用Shell 掌握Runtime.exec

    java中调用shell命令的核心方法是runtime.getruntime().exec(),但需注意进程阻塞、流处理等问题。1. 命令执行:exec()启动独立进程执行系统命令;2. 输入/输出流:需手动处理子进程的输入输出流,否则可能导致阻塞;3. 异常处理:必须捕获ioexception以应…

    2026年10月10日 • 用户投稿
    300

发表回复

登录后才能评论
关注微信