linux基础--sed编辑器详解

1、sed简介

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

sed默认不编辑源文件,仅对模式空间中的数据作处理。处理结束后,将模式空间打印。

2、命令语法

sed [options] ‘command‘ file(s)

3、命令使用示例

将data.inc.php中从mysql_dlevent到mysql_activation之间的root替换成killtr
sed -i -e "/mysql_dlevent/,/mysql_activation/s/root/killtr/"  config/data.inc.php

4、常见options选项

-n:静默模式,只显示符合条件的行,不再默认显示模式空间中的内容。

5、常见command参数

d:删除指定行

[[email protected] scripts]# sed ‘1,2d‘ /etc/passwd
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
#删除/etc/passwd中1-2行的数据
[[email protected] scripts]# sed ‘3,$d‘ /etc/passwd
#删除/etc/passwd中第3行到最后一行的数据
[[email protected] scripts]# sed ‘/root/d‘ /etc/passwd
#删除包含root的行
[[email protected] scripts]# sed ‘1,+2d‘ /etc/passwd
#删除第一行和第一行后2行的数据
[[email protected] scripts]# sed ‘/^\//d‘ /etc/fstab 
#删除以/开头的行,注意匹配的/需要转义

p:显示指定行

[[email protected] scripts]# sed ‘/^\//p‘ /etc/fstab  
proc                    /proc                   proc    defaults        0 0
/dev/vdb                /chenchao               ext4    defaults,usrquota,grpquota 1 2
/dev/vdb                /chenchao               ext4    defaults,usrquota,grpquota 1 2
#注:上例为显示以/开头的行,需要注意的是默认目标文件中匹配的行显示两次,没有匹配的行显示一次,这是因为sed默认是读一行显示一行,而p匹配到的则会单独显示,因此就会匹配到的就会显示两次。可以使用sed选项来处理。
[[email protected] scripts]# sed -n ‘/^\//p‘ /etc/fstab 
/dev/vdb                /chenchao               ext4    defaults,usrquota,grpquota 1 2
#使用-n选项只显示匹配到的行。

a \string:在指定的行后追加新航,内容为string。

[[email protected] scripts]# sed ‘/^\//a \#hello liang‘ /etc/fstab       
/dev/vdb                /chenchao               ext4    defaults,usrquota,grpquota 1 2
#hello liang
#在/etc/fstab中以/开头的行后增加#hello liang
[[email protected] scripts]# sed ‘/^\//a \#hello liang\n#hello linux‘ /etc/fstab    
/dev/vdb                /chenchao               ext4    defaults,usrquota,grpquota 1 2
#hello liang
#hello linux
#在/etc/fstab中以/开头的行后增加两行

i \strig:在指定的行前追加新航,内容为string,用法和a \string一样。

r FILE:将指定文件的内容添加到符合条件的行后。

[[email protected] scripts]# sed ‘/chenchao/r /etc/issue‘ /etc/fstab
/dev/vdb                /chenchao               ext4    defaults,usrquota,grpquota 1 2
CentOS release 6.8 (Final)
Kernel \r on an \m
#将/etc/fstab中包含chenchao字符串的行后加入/etc/issue的内容
[[email protected] scripts]# sed ‘$r /etc/issue‘ /etc/fstab          
/dev/vdb                /chenchao               ext4    defaults,usrquota,grpquota 1 2
CentOS release 6.8 (Final)
Kernel \r on an \m
#将/etc/fstab中最后一行后加入/etc/issue的内容
[[email protected] scripts]# sed ‘2r /etc/issue‘ /etc/passwd 
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
CentOS release 6.8 (Final)
Kernel \r on an \m
#将/etc/passwd中第二行后加入/etc/issue的内容
时间: 2024-10-13 16:00:34

linux基础--sed编辑器详解的相关文章

linux之vim编辑器详解

字处理器:像word,wps,除了本文本身以外,还有修饰方面的设置. 文本编辑器:编辑纯ASCII文档. nano,sed  入门简单,功能简陋. 强大的vi编辑器 (Visual Interface) 现在是Vim :VI  inproved 它是全屏编辑器,模式化编辑器. vim模式: 编辑模式(命令模式) 输入模式 末行模式 默认处于编辑模式. 模式转化: 编辑模式--->输入模式: i :在当前光标所在字符的前面,转为输入模式. a:在当前光标所在字符的后面,转为输入模式. o:在当前光

(赵小明RHCE笔记)linux基础之四 权限详解

一.special permissions for executables1.special permissions for executables:  -suid:command run with permissions of the owner of the command,not executor of   the command  -sgid:command runs with group affiliation of the group of the commandeg:file:us

linux 之sed命令详解

sed命令详解 sed是什么 sed是linux文本处理三剑客之一,全称 StreamEDitor,非常著名的行编辑器,功能十分强大. sed的工作过程 sed处理文本时每次从文件复制出来一行,放在工作车间,又叫做模式空间,即pattern space,然后与模式进行匹配.如果复制出来的这一行不能被模式匹配到,就默认把这一行输出至标准输出(如果用户明确指定不输出也可以). 如果能被模式匹配到,就对这行数据进行用户指定的编辑操作,编辑完成后可能输出至标准输出,也可能是用户指定的其他操作.这样第一行

Linux 之 sed 实例详解

sed 实例详解 文本内容: 101,oldboy,CEO 102,zhangyao,CTO 103,Alex,COO 104,yy,CFO 105,feixue,CIO 1.sed 增加内容 -a 往文本或号后面增加内容 -i 往行号前增加内容 -a 实例:在Alex 前增加111,Kang,OOO [[email protected] ~]# sed '1a 111,Kang,OOO' test.txt 101,oldboy,CEO 111,Kang,OOO 102,zhangyao,CTO

linux之sed命令详解

sed是一个非交互式文本编辑器,它可以对文本文件和标准输入进行编辑,标准输入可以来自键盘输入,文件重定向,字符串,变量,或者是管道的文本.并将其复制到缓冲区,然后读取命令行的命令,对此命令要求的行号进行编辑. 用法: sed共有三种用法: ①直接在命令行中使用 sed [选项] 'sed命令' 输入文件 ②将sed命令写入脚本文件中,使用sed命令调用 sed [选项] -f sed脚本文件 输入文件 ③将sed命令写入脚本文件中,并设置为可执行 ./sed 脚本文件 输入文件 其中第③种的脚本

linux下sed命令详解

sed:Stream Editor文本流编辑,sed是一个"非交互式的"面向字符流的编辑器.能同时处理多个文件多行的内容,可以不对原文件改动,把整个文件输入到屏幕,可以把只匹配到模式的内容输入到屏幕上.还可以对原文件改动,但是不会再屏幕上返回结果. sed命令的语法格式: sed的命令格式: sed [option] 'sed command'filename sed的脚本格式:sed [option] -f 'sed script'filename sed命令的选项(option):

玩转LINUX之sed命令详解

Linux sed命令是利用script来处理文本文件. sed可依照script的指令,来处理.编辑文本文件. Sed主要用来自动编辑一个或多个文件:简化对文件的反复操作:编写转换程序等. 执行时,sed会从文件或者标准输入中读取一行,将其复制到缓冲区,对文本编辑完成之后,读取下一行直到所有的文本行都编辑完毕. 所以sed命令处理时只会改变缓冲区中文本的副本,如果想要直接编辑原文件,可以使用-i选项或者将结果重定向到新的文件中. sed命令的基本语法如下: # sed [options] co

Linux基础进程命令详解

进程有关基础命令 一.进程定义 1.进程就是CPU未完成的工作,而且它是其中运行着一个或多个线程的地址空间和这些线程所需要的系统资源. 二.Linux系统进程和一些有关进程的命令 1.ps命令       ps  [options]  1>ps - report a snapshot of the current processes.    解释:报告当前系统的进程信息  2>基本参数    a      #关于当前环境的所有进程    -a    #显示当前环境下shell的进程    x 

linux的sed命令详解

sed是一个很好的文件处理工具,本身是一个管道命令,主要是以行为单位进行处理,可以将数据行进行替换.删除.新增.选取等特定工作,下面先了解一下sed的用法 sed命令行格式为: sed [-nefri] 'command' 输入文本 常用选项: -n∶使用安静(silent)模式.在一般 sed 的用法中,所有来自 STDIN的资料一般都会被列出到萤幕上.但如果加上 -n 参数后,则只有经过sed 特殊处理的那一行(或者动作)才会被列出来. -e∶直接在指令列模式上进行 sed 的动作编辑: -