• 技术文章 >运维 >linux运维

    linux中sed和awk有什么区别

    青灯夜游青灯夜游2022-05-11 18:38:57原创371

    区别:1、sed是流编辑器,而awk是文本格式化工具,报告生成器;2、awk适合对文件进行抽取整理,sed适合对文件进行编辑;3、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 命令的基本格式如下:

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

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

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

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

    sed和awk的区别

    相关推荐:《Linux视频教程

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

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。

    广告:linux零基础到高级 购买学习

    专题推荐:linux
    上一篇:linux设备文件有哪几类 下一篇:linux中less和more的区别有哪些
    php培训_php实战培训【立即报名】-php中文网第20期

    相关文章推荐

    • 【活动】充值PHP中文网VIP即送云服务器• dos命令与linux命令的区别是什么• linux中lsb是什么意思• linux中mkdir是什么意思• linux默认编码是什么格式• linux sdk是什么• linux中env是什么• linux安装软件有哪几种方式
    1/1

    PHP中文网