centos 7中的文本处理工具sed命令的使用

sed是一个强大而简答的文本解析转换工具,可以读取文本,并根据指定的条件对文本内容进行编辑(删除、替换、添加、移动等),最后输出所有行或者仅输出处理的某些行。sed也可以在无交互的情况下实现相当复杂的文本处理操作,被广泛应用于shell脚本中,用以完成各种自动化处理任务。
sed的工作流程主要包括读取、执行和显示三个过程:

  • 读取:sed从输入流(文件、管道、标准输入)中读取一行内容并存储到临时的缓冲区中(也称为模式空间)。
  • 执行:默认情况下,所有的sed命令都在模式空间中顺序地执行,除非指定了行的地址,否则sed命令将会在所有的行上依次执行。
  • 显示:发送修改后的内容到输出流,再发送数据后,模式空间将会被清空。

在所有的文件内容都被处理完之前,上述过程将重复执行,直至所有内容被处理完。

默认情况下,所有sed命令都是在模式空间内执行的,因此输入的文件并不会发生任何变化(也就是说只是输出的内容变了,而实际的源文件并没有被改动),除非使用重定向存储输出。

sed命令的使用:
一般有两种使用格式:

sed  [选项]   ‘操作‘  参数
sed  [选项]  -f  脚本文件  参数

常见的sed命令选项主要包含以下几种:

  • -e或--expression=:表示用指定命令或脚本来处理输入的文本文件;
  • -f或--file=:表示用指定的脚本文件来处理输入的文本文件;
  • -h或--help:显示帮助;
  • -n、--quiet或silent:表示仅显示处理后的结果;
  • -i:直接编辑源文本文件。

“操作”用于指定对文件操作的动作行为,也就是sed命令。通常情况下采用的“[n1],[n2]”操作参数的格式。n1、n2是可选的,不一定会存在,代表选择进行操作的行数,如操作需要在5~20行之间进行,则表示为“5,20 动作行为”。常见的操作包括以下几种:

  • a:增加,在当前行下面增加一行指定内容。
  • c:替换,将选定行替换为指定内容。
  • d:删除,删除选定的行。
  • i:插入,在选定行上面插入一行指定内容。
  • p:打印,如果同时指定行,表示打印指定行,如果不指定行,则表示打印所有内容;如果有非打印字符,则以ASCII码输入。其通常与“-n”选项一起使用。
  • s:替换,替换指定字符。
  • y:字符转换。

用法示例:

①、sed命令基本语法:

[[email protected] ~]# sed -n ‘p‘ test.txt              #输出所有内容,相当于cat testtest.txt
[[email protected] ~]# sed -n ‘3p‘ test.txt            #输出第三行。
[[email protected] ~]# sed -n ‘3,5p‘ test.txt         #输出3~5行。
[[email protected] ~]# sed -n ‘p;n‘ test.txt           #输出所有奇数行,n表示读入下一行资料。
[[email protected] ~]# sed -n ‘n;p‘ test.txt          #输出所有偶数行,n表示读入下一行资料。
[[email protected] ~]# sed -n ‘1,5{p;n}‘ test.txt    #输出1~5行之间的奇数行,第(1,3,5行)。
[[email protected] ~]# sed -n ‘10,${n;p}‘ test.txt      #输出第10行至文件尾之间的偶数行。

②、sed命令与正则表达式结合使用:

[[email protected] ~]# sed -n ‘/the/p‘ test.txt             #输出包含the的行
[[email protected] ~]# sed -n ‘4,/the/p‘ test.txt          #输出第4行至末尾第一个包含the的行。
[[email protected] ~]# sed -n ‘/the/=‘ test.txt            #输出包含the的行所在的行号,“=”用来输出行号
[[email protected] ~]# sed -n ‘/^PI/p‘ test.txt             #输出以PI开头的行
[[email protected] ~]# sed -n ‘/[0-9]$/p‘ test.txt             #输出以数字结尾的行
[[email protected] ~]# sed -n ‘/\<wood\>/p‘ test.txt      #输出包含单词wood的行,\<、\>表示单词边界。

③、删除符合条件的文本(以下操作只是输出时删除,若要删除源文件,则需结合“-i”选项):

[[email protected] ~]# nl test.txt | sed ‘3d‘       #删除第三行
[[email protected] ~]# nl test.txt | sed ‘3,5d‘     #删除第3~5行
[[email protected] ~]# nl test.txt | sed ‘/cross/d‘          #删除包含cross的行
#若要删除不包含cross的行,用!符号表示取反操作,如‘/cross/! d‘
[[email protected] ~]# sed ‘/^[a-z]/d‘ test.txt           #删除以小写字母开头的行
[[email protected] ~]# sed ‘/\.$/d‘ test.txt              #删除以“ . ”结尾的行
[[email protected] ~]# sed ‘/^$/d‘ test.txt             #删除所有空行

④、替换符合条件的文本:

使用sed命令进行替换操作时需要用到s(字符串替换)、c(整行/整块替换)、y(字符转换)命令选项,常用的语法如下:

⑤、迁移符合条件的文本(相当于Windows中的剪切):
H,复制到剪贴板;g、G,将剪切板中的数据覆盖/追加至指定行;w,保存为文件;r,读取指定文件;a,追加指定内容。

⑥、使用脚本编辑文件:
使用sed脚本,将多个编辑指令存放到文件中(每行一条编辑指令),通过-f来调用,如:

[[email protected] ~]# sed ‘1,5{H;d};17G‘ test.txt                #将第1~5行内容转移至第17行后
#以上操作可改用脚本文件方式,如下:
[[email protected] ~]# vim opt.list

1,5H
1,5d
17G
[[email protected] ~]# sed -f opt.list test.txt      #使用“-f”选项来调用脚本。

原文地址:https://blog.51cto.com/14154700/2401082

时间: 2024-08-01 09:37:38

centos 7中的文本处理工具sed命令的使用的相关文章

第9章 文本处理工具sed

笔记整理开始时间:2018年4月17日08:45:48 更多内容请点击: Linux学习从入门到打死也不放弃,完全笔记整理(持续更新,求收藏,求点赞~~~~) http://blog.51cto.com/13683480/2095439 本章内容 sed介绍 sed用法 sed高级用法 文本处理工具sed Stream EDitor,行编辑器 又称流编辑器,它一次处理一行内容.处理时,把当前处理的行存储在临时 缓冲区,称为"模式空间"(pattern space),接着用sed命令处理

处理文本的工具sed,vim 编辑器的使用 &nbsp; Linux版

处理文本的工具sed Stream EDitor 行编辑器 sed一次处理一行的内容,处理时,将当前处理的行存储在临时缓冲区,称为"模式空间",接着用sed命令处理缓冲区中的内容,处理完成后,将缓冲区的内容送往屏幕,接着处理下一行不断重复,直到末尾. 一次处理一行 文件--->内存空间--->屏幕 模式空间 文件--->内存空间--->屏幕 | 保持空间 sed   -n:不输出模式空间内容的自动打印 -e:多点编辑 -f:/PATH/TO/SCRIPT_FIL

DAY8:文本处理工具sed和vim

8月8号,主要学习内容为: 一.文本处理工具sed 二.vim编辑器 一.文本处理工具sed 1)简介 sed是一种流编辑器,它一次处理一行内容.处理时,把 当前处理的行存储在临时缓冲区中,称为"模式空间"( pattern space),接着用sed命令处理缓冲区中的内容 ,处理完成后,把缓冲区的内容送往屏幕.接着处理下一 行,这样不断重复,直到文件末尾.文件内容并没有改变 ,除非你使用重定向存储输出.Sed主要用来自动编辑一 个或多个文件,简化对文件的反复操作,编写转换程序等. 用

linux下的文本处理工具---sed

文本处理工具sed 1.sed介绍 Sed是一种非交互式的流编辑器,通过多种转换修改流经过它的文本.但是,默认情况下,sed并不改变原文件本身,而只是对流经sed命令的文本进行修改,并将修改后的结果打印到屏幕上.Sed处理文本时是以行为单位的,每处理一行就立即打印出来,然后在处理下一行,直至全文处理结束. Sed可做的编辑动作包括删除.查找替换.添加.插入.从其他文件中读入数据等,如果想对修改后的流文件进行保存更改,则需要使用重定向对修改后输出的内容进行保存 Sed的用法:sed  [optio

&nbsp; &nbsp; linux 中的文本处理工具,grep,egrep

一:grep与egrep简介:                    grep与egrep是在linux中对linux文本搜索用的比较多的一个工具.它结合正则表达式实现与模型匹配的行. 二:语法格式: grep [option]... 'PATTERN' FILE... 支持基本正则表达式                  egrep [option]... 'PATTERN' FILE...支持扩展正则表达式                  [option]常用的主要有:          

Linux 的文本处理工具---sed

                sed 处理文本工具 一.概述 Stream EDitor,行编辑器 sed是一种流编辑器,它一次处理一行内容.处理时,把当前处理的行存储在临时缓冲区中,称为"模式空间"(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕.接着处理下一行,这样不断重复,直到文件末尾.文件内容并没有改变,除非你使用重定向存储输出.sed主要用来自动编辑一个或多个文件,简化对文件的反复操作,编写转换程序等  sed 是一种非

LVM实验分享和文本处理工具sed

LVM 逻辑卷管理 PV(物理卷) PV物理卷就是指硬盘分区或从逻辑上与磁盘分区具有同样功能的设备不如RAID,是LVM的基本存储逻辑块,但和基本的物理存储介质(如分区磁盘等)比较,却包含与LVM相关的管理参数. VG(卷组) LVM卷组类似与非LVM系统中的物理硬盘,其由物理卷组成,可以在卷组上创建一个或多个"LVM分区"(逻辑卷),LVM逻辑卷是由一个或多个物理卷组成 LV(逻辑卷) LVM的逻辑卷类似于非LVM系统中的硬盘分区,在逻辑卷之上可以建立文件系统. 总的来说LVM就是将

9-13 文本处理工具sed及awk的用法

文本编辑三剑客:grep, sed, awk    grep: 文本搜索工具:egrep, fgrep    sed: stream editor, 流编辑器:    awk(gawk):文本格式化工具,报告生成器 sed命令: 基本正则表达式的元字符:     字符匹配:            .: 匹配任意单个字符:            []:匹配指定范围内的任意单个字符:            [^]:匹配指定范围内的任意单个字符: [:lower:]:所有小写字母 [:upper:]:

linux 中的 文本处理工具

文本处理工具 在linux系统中 文本工具有很多 现在具体介绍几款 如 抽取文本的工具 和文件三剑客 文件内容:less和 cat 文件截取:head和tail 按列抽取:cut 按关键字抽取:grep egrep 首先 有 查看文件的cat tac cat [OPTION]... [FILE]... -E: 显示行结束符$ -n: 对显示出的每一行进行编号 -A:显示所有控制符 -b:非空行编号 -s:压缩连续的空行成一行 tac 与cat 命令 一样 不过是取反 more: 分页查看文件 m