sed实例

sed: Stream Editor

行编辑器 逐行编辑

将每行内容读入到内存中,在内存中进行处理,将结果返回给屏幕 ,此段内存空间称为模式空间

默认不编辑原文件,仅对模式空间的数据进行处理,处理结束后,将模式空间的内容显示到屏幕

sed命令的使用格式

sed [options] ‘AddressCommand‘ file ...

Address:表示对哪些行进行处理

Command:操作命令

options:

-n:不再显示模式空间中的内容(默认显示)

-i: 直接修改原文件

-e ‘AddressCommand‘ -e ‘AddressCommand‘:同时执行多个匹配操作

-f file_name 将多个AddressCommand保存至文件中,每行一个AddressCommand;读取该文件中的操作同时执行多个操作

-r:表示使用扩展正则表达式

Address表示方法:

1、StartLine,EndLine

1,100

$表示最后一行

1,$

2、/Regex/

/oot/

/^oot/

3、/Regex1/,/Regex2/

第1次被Regex1匹配的行开始,到第1次被Regex2匹配的行中间的所有行

4、LineNumber

10

精确匹配特定的行

5、StartLine,+N

1,+3

从startline开始,向后的N行

Command:

d  删除符合条件的行

# sed ‘1,2d‘ /etc/inittab

删除文件中包含oot的行

# sed ‘/oot/d‘ /etc/fstab

删除第1行及其后2行

# sed ‘1,+2d‘ /etc/fstab

删除第1行

# sed ‘1d‘ /etc/fstab

删除以/开头的行

# sed ‘/^\//d‘ /etc/fstab

p  显示符合条件的行

显示以/开头的行

# sed -n ‘/^\//p‘ /etc/fstab

a \string 在符合条件的行后追加新行,string为追加的内容

在以/开头的行后面追加# hello world

# sed ‘/^\//a \# hello world‘ /etc/fstab

在以/开头的行后面追加两行内容,分别为# hello worl  # hello linux

# sed ‘/^\//a \# hello world\n# hello linux‘ /etc/fstab

i \string 在符合条件的行前添加新行,string为追加的内容

在文件第1行添加# hello world

# sed ‘1i \# hello world‘ /etc/fstab

r file_name 将指定文件的内容添加到符合条件的行的后面

在文件的第2行后追加/etc/issue文件的内容

# sed ‘2r /etc/issue‘ /etc/fstab

w file_name 将符合条件的内容另存到指定文件中

将以UUID开头的行另存为到/1.txt中

# sed ‘/^UUID/w /1.txt‘ /etc/fstab

s/regex/string/[修饰符] 查找并替换(默认情况下只替换每一行第1次被匹配的字符)

修饰符:

g:替换每一行所有的字符

i:忽略大小写

查找文件中的UUID,并替换为uuid

# sed ‘s/UUID/uuid/‘ /etc/fstab

将行首的/替换成#

# sed ‘s/^\//#/‘ /etc/fstab

将每一行出现的所有/替换为@

# sed ‘s/\//@/g‘ /etc/fstab

反向引用 \(\)   \1  \2

将文件中以l..e替换为l..er,例如love替换为lover

# sed ‘s/\(l..e\)/\1r/g‘ /etc/fstab

# sed ‘s/l..e/&r/g‘ /etc/fstab

&:引用正则表达式匹配的所有字符串

将文件中l..e的单词替换为L..e,例如love替换为Love

# sed ‘s/l\(..e\)/L\1/‘ /1.txt

删除行首的空格

# sed ‘s/^[[:space:]]*//‘ /etc/fstab

= 用于显示每一行的行号

显示/etc/passwd文件最后一行的行号

# sed -n ‘$=‘ /etc/passwd

49

c \string 替换指定行的内容

将文件中最后一行内容替换为End Of File

# sed ‘$c \End Of File‘ /1.txt

sed示例:

1、删除/etc/grub.conf文件中行首的空白字符

# sed ‘s/[[:space:]]*//‘ /etc/grub.conf

2、替换/etc/inittab文件中"id:3:initdefault:"一行中的数字为5

# sed ‘s/\(id:\)3\(:initdefault:\)/\15\2/‘ /etc/inittab

3、删除/etc/inittab文件中的空白行

# sed ‘/^$/d‘ /etc/inittab

4、删除/etc/inittab文件中开头的#号

# sed ‘s/^#//‘ /etc/inittab

5、删除某文件中开头的#号,但要求#号后面必须有空白字符

# sed ‘s/^#[[:space:]]\+//‘ /1.txt

6、删除某文件中以空白字符后面跟#号的行中的开头的空白字符及#

# sed ‘s/^[[:space:]]\+#//‘ /1.txt

时间: 2025-01-06 18:05:37

sed实例的相关文章

sed实例精解--例说sed完整版

原文地址:sed实例精解--例说sed完整版 作者:xiaozhenggang 最近在学习shell,怕学了后面忘了前面的就把学习和实验的过程记录下来了.这里是关于sed的,前面有三四篇分开的,现在都把它们弄到了一起,并做了一些调整,二十多页,有点长啦.不过大部分都是例子来着,呵呵. 在电脑前坐太久了还真是不行,脖子都歪啦!强烈建议各位找点时间多动动,多动动!还是身体重要嘛!!! 我的实验环境是: fedora 14 ,bash. 在实验中遇到了一些问题,都在后面的例子中提到啦.有些问题纠结了好

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

21个SED实例

1,删除文件每行的第一个字符.sed 's/.//' install.logsed -n 's/^.//gp' /etc/passwdsed -nr 's/(.)(.*)/\2/p' /etc/passwd2,删除文件每行的第二个字符.sed 's/.//2' install.logsed  's/(.)(.)(.*)/1\3\/' install.logsed -nr 's/(.)(.)(.*)/\1\3/p' /etc/passwd3,删除文件每行的最后一个字符.sed 's/.$//' i

sed实例收集

url:http://blog.csdn.net/hepeng597/article/details/7852468 一.元字符集    1)^锚定行的开始 如:/^sed/匹配所有以sed开头的行.     2)$ 锚定行的结束 如:/sed$/匹配所有以sed结尾的行.     3).    匹配一个非换行符的字符 如:/s.d/匹配s后接一个任意字符,然后是d.     4)*    匹配零或多个字符 如:/*sed/匹配所有模板是一个或多个空格后紧跟sed的行.    5)[]   匹配

sed实例(持续更新)

1.在最后一行加: sed -i '$a\Defaults logfile=/var/log/sudo.log' /etc/sudoers 2.替换字符: sed -i 's/Allow from .example.com/Allow from localhost/g' /usr/local/xxx/config/apache/extra/httpd-info.conf 3.在匹配行下方几行开始加: sed -i -e '/location ~ \/\\.ht/{n;n;s|$|\n #----

linux sed&awk详解

sed sed为文本处理三剑客之一.本身就是一个管道命令,可以将文件进行增加,修改,删除,选取等操作. 格式:sed [-nrefi] [command] "文本字符串" 选项: -r: 支持扩展正则表达式: -n: 静默模式:(sed有个模式空间和保持空间,默认sed会将执行的结果保存到模式空间里面,而模式空间默认情况是输出在屏幕上,加了-n,则阻止将模式空间的内容输出到屏幕上) -f:/path/to/script_file:从指定的文件中读取脚本并运行 -e script1 -e

文本处理三剑客之-sed

1.文本处理三剑客-sed #sed语法: sed  [OPTION]...  {script-only-if-no-other-script}        [input-file]... sed理解:是一种流编辑器,一次处理一行内容,处理时把当前处理的行存储在临时缓存中,成为"模式空间",接着用sed命令处理缓冲区的内容,处理完毕后吧缓冲区内容输出到屏幕接着处理下一行.这样不断重复到末尾.文件内容并没有改变.除非使用重定向输出才会改变内容. 常用选项 -n 不输出模式空间到屏幕 -

sed和awk的用法以及区别

sed主要处理"行问题". awk主要处理"列问题". sed实例:sed -n "2p" /file 输出file文件中的第二行 awk实例:awk -F= 'BEGIN{print "hello"}{print $2}END{print "bye"}' /file 以"="为分块符,输出第一行为"hello",中间输出为file的所有行的第二列,最后输出 &quo

Linux Shell常用技巧(三) sed

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