课时13:sed和awk使用方法

Posted Aiden_Zhao

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了课时13:sed和awk使用方法相关的知识,希望对你有一定的参考价值。

sed

sed(stream editor 流编辑器)编辑器是一行一行的处理文件内容的。正在处理的内容存放在模式空间(缓冲区)内,处理完成之后按照选项的规定进行输出或文件修改。

sed是一种在线编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”,接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直至文件末尾。文件内容并没有改变,除非使用重定向存储输出。

sed主要用来自动编辑一个或者多个文件,简化对文件的反复操作。

语法
sed [options] ‘[command]’ [filename]

options

  • -n 一致自动(默认的)输出,读取下一个输入行
  • -e 执行多个sed指令
  • -f 运行脚本
  • -i 编辑文件内容
  • -i.bak 编辑的同时创造.bak的备份

command

  • a 在匹配后追加

  • i 在匹配后插入

  • p 打印

  • d 删除

  • r/R 读取文件/一行

  • w 另存

  • s 查找

  • c 替换

  • y 替换

  • h/H 拷贝/追加模式空间(缓冲区)到存放空间

  • g/G 从存放空间取回/追加到模式空间

  • x 两个空间内容交换

  • n/N 拷贝/追加下一行内容到当前

  • D 删除\\n之前的内容

  • P 打印\\n之前的内容

  • b 无条件跳转

  • t 满足匹配后的跳转

  • T 不满足匹配后的跳转

    一些例子

    1. 显示文件第三行
    #!/bin/bash
    sed -n '3p' filename
    
    1. 显示文件前三行
    #!/bin/bash
    sed -n '1,3p' filename
    
    1. 显示文件除前三行以外的内容
    #!/bin/bash
    sed -n '1,3!p' filename
    
  1. 显示第三行及之后的内容
#!/bin/bash
sed -n '3,+3p' filename

awk

awk是一种优良的文本处理工具,Linux及Unix环境中现有的功能强大的数据处理引擎之一。最简单地说,awk是一种用于处理文本的变成语言工具。
任何awk语句都是由模式和动作组成,一个awk脚本可以有多个语句。模式决定动作语句的触发条件和出发时间。

特殊字段
BEGIN语句设置计数和打印头部信息,在任何动作之前进行。
END语句输出统计结果,在完成动作之后执行。
分隔符默认是空格,可以用-F,改为逗号为分隔符。

以上是关于课时13:sed和awk使用方法的主要内容,如果未能解决你的问题,请参考以下文章

Bash - Linux - 在一行中找到匹配并打印到SED / Awk / Grep行的末尾

三剑客之sed,awk,grep,egrep

sed-awk的简单操作

linux三剑客的基本使用——grep、sed、awk

_sed命令

使用sed和awk将文件中的非双引号中的逗号分隔符替换为竖线