sed命令用法

注意:Linux三大文本查找工具:grep、sed、awk。

sed命令基本用法:

Stream EDitor:行编辑器;实现逐行处理文本;而全屏编辑器是vim。

工作特性:

并不处理文本文件本身,而是处理文件内容时,是逐行的把文本加载至内存空间中,在内存中完成处理,然后再输出到屏幕上,对sed而言,内存空间叫模式空间,可对文本行进行模式匹配后再做处理,sed有许多编辑命令。

sed命令默认不编辑原文件,仅对模式空间中的数据做处理,而后,处理结束后,将模式空间的内容显示至屏幕。

sed命令格式

sed [options] ‘AddressCommand‘ FILE ...

-n:静默模式,不再默认显示模式空间中的内容;

-i:直接修改原文件;

-e ‘AddressCommand‘ -e ‘AddressCommand‘:同时执行多个编辑命令;

-f /PATH/TO/SED_SCRIPT:把每一个编辑命令‘AddressCommand‘保存至文件中,从文件中读出编辑命令进行处理;

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

Address:指定行的编辑范围,表示法为;

1、StartLine,EndLine:开始行,结束行;例如1,100

$:最后一行,即倒数第一行;

$-1:表示倒数第二行(存疑是否支持?);

2、/RegExp/:使用正则式匹配;例如:/^root/

3、/pattern1/,/pattern2/:表示第一次被pattern1匹配到的行开始,至第一次被pattern2匹配到的行结束;例如sed ‘/oot/d‘ /etc/fstab表示删除文件中包含oot的行;

4、LineNumber:指定的行;

5、StartLine,+N:表示从StartLine开始,向后的N行;例如sed ‘1,+2d‘ /etc/fstab删除前3行;

Command:编辑命令

d:删除符号条件的行;例如sed ‘1,2d‘ /etc/fstab表示删除文件的第1,2行,然后显示到屏幕;

p:显示符号条件的行;例如sed ‘/^\//p /etc/fstab显示以/开头的行,则符合条件的行显示了2次,原因是因为原文件也显示了一次,匹配到的文件又显示了一次;可使用-n选项即sed -n ‘/^\//p /etc/fstab;

a \string:在符合的行后面追加新行,内容为string;例如sed ‘ /^\//a \# hello word‘ /etc/fstab表示在以/开头的行下面加1行# hello word;

如果加2行,则sed ‘/^\//a \# hello word\n# hello word‘ /etc/fstab

\n:为换行;

i \string:在符合的行前面添加新行,内容为string;

r FILENAME:将指定的文件的内容添加至符合条件的行的下行;例如sed ‘2r /etc/issue‘ /etc/fstab表示把issue文件添加在第2行的下面(可用于合并文件);又例如sed ‘1,,2r /etc/issue‘ /etc/fstab

w FILENAME:将指定范围内的内容另存至指定的文件中;例如sed -n ‘/oot/w /tmp/oot.txt‘ /etc/fstab表示匹配oot所在的行,另存为oot.txt文件中;

s/pattern/string/:查找并替换,pattern可使用正则式,默认只替换每行中第一次被模式匹配到的字符串;例如sed ‘s/oot/OOT/‘ /etc/fstab表示查找oot替换为OOT;又例sed ‘s/^\//#/‘ /etc/fstab表示以/开头的行替换为#;又例sed ‘s/\//#/‘ /etc/fstab表示只替换每行中第一次被模式匹配到的字符串;

加修饰符:

g:全局替换;例如sed ‘s/\//#/g‘ /etc/fstab表示以/开头的行全局替换为#;

i:忽略字符大小写;

s///:也是使用其它分隔符,只要不与使用的字符串相同即可;例如[email protected]@@或s###,这样就避免了转义;

引用符:&:表示引用模式匹配到的整个字符串,类似正则式中的分组;例如sed.txt文件内容为hello,like .hi,my love.;查找sed ‘s#l..e#&r#g‘ sed.txt结果为hello,liker.hi,my lover.或写为sed ‘s#\(l..e\)#\1r#g‘ sed.txt

例如:

history | sed ‘s#^[[:space:]]*##g‘ | cut -d‘ ‘ -f1表示删除开头的空白字符

时间: 2024-10-27 12:31:20

sed命令用法的相关文章

shell脚本学习笔记之sed命令用法

sed基本用法 sed:stream editor 行编辑器 sed:模式空间 将匹配的文本内容储存到模式空间中 默认不编辑原文件,仅对模式空间中的数据做处理,而后,处理结束后,架构模式空间的内容显示 sed -n -i:直接修改原文件 -e script -e script:可以同时执行多个脚本 -f file sed -f /scripts  file -r:表示使用扩展正则表达式 sed 'adresscommand' file... -n:静默模式,不再默认显示模式空间中的内容,即只显示

sed 命令用法

关于sed的使用方法总结及实践 流编辑器 一次从文件中读出一行,放在自己的工作车间里,不会去改原来的文件内容,把pattern space之后的处理结果,输出到标准输出stdout -n 使用安静模式,在一般的sed用法中,所有的stdin的数据都会输出到屏幕上,加上-n之后,只有经过sed特殊处理的哪一行才会输出到屏幕上 -e直接在命令模式上进行动作编辑 -f直接将sed的动作写进一个文件里 -r sed的动作支持扩展正则表达式 -i直接修改源文件内容   写脚本可能会用到 地址定界 d表示删

SED命令用法示例整理

修改某行的内容 sed -i  '3s#.*#baseurl=http://mirror.neu.edu.cn/fedora-epel/6/x86_64/#g'  /etc/yum.repos.d/epel.repo 删除指定的行 sed -i  '4d' /etc/yum.repos.d/epel.repo 修改以某字符开头的行的内容 sed -i  '/^TCPAddr/{ s/127.0.0.1/0.0.0.0/g }'  /etc/clamd.conf 清除文件或某段内容中的空格,不包括

sed命令浅析

写在前面: 博客书写牢记5W1H法则:What,Why,When,Where,Who,How. 本篇主要内容: ● sed 命令用法 sed stream editor for filtering and transforming text sed会将整行读取到模式空间(pattern space),在模式空间进行处理后,根据处理动作进行操作(默认输出),直到读取新的行,将模式空间的原有行覆盖,除非手动干预.而模式空间的内容也可以转移到保留空间,保留空间可以保留更多行,以供其他操作. sed [

sed命令(二)

转自:https://www.cnblogs.com/maxincai/p/5146338.html sed命令用法 sed是一种流编辑器,它是文本处理中非常有用的工具,能够完美的配合正则表达式使用,功能不同凡响.处理时,把当前处理的行存储在临时缓冲区中,称为『模式空间』(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕.接着处理下一行,这样不断重复,直到文件末尾.文件内容并没有改变,除非你使用重定向存储输出.sed主要用来自动编辑一个或多个文

sed命令的用法

sed命令的用法 -n:选项不打印文件的所有行 [[email protected] ~]# sed '1'p 1                  //不带-n选项,sed会把所匹配的行打印出来,  root:x:0:0:root:/root:/bin/bash             //所要求的行  root:x:0:0:root:/root:/bin/bash              // 并且打印整个文本文件  bin:x:1:1:bin:/bin:/sbin/nologin syn

关于linux中sed命令的简单用法

linux中sed的学习和使用 今天突然用到了sed这个命令,就即兴学习了一波突然感觉这个功能还是很强的.sed在#man sed下文档查看解释的是:用于过滤和转换文本的流编辑器.即如下图: 我自己用过这个命令之后感觉对于文档来说可以显示某个区间行,显示结果还可以在段前后添加内容删除,替换内容.但是最后才发现,怎么还能直接修改到文件里不仅仅是显示出来,文件内容直接被修改了. 下面就一一介绍这个有趣的命令,莫急莫急一个一个来. 首先找个文件(没用的文件且有内容,搞坏了系统文件可不好玩了)来当测试文

sed命令基础用法

    sed(Stream EDitor)简介 sed是一个流编辑器编辑器,本身是一个管道命令,主要以行为单位处理文本文件,可以将数据进行替换.删除.新增.选取等特定工作:sed并不会处理文本文件本身,而是每当处理一个文件时,按顺序逐行读取到模式空间(内存)中,而后在模式空间中完成编辑,把编辑的结果输出到屏幕上,接着处理下一行,反复操作,直到文件结尾. 模式空间:将读取的内容放在内存中的一块区域编辑,这些内存空间就称为模式空间 格式: sed [options]    'Address Com

sed命令的一个用法

有命令如下: 1.sed -n '1~2!p' datafile 该条命令的意思是:每两行读取datafile文件到模式空间,匹配每两行中的第一行,不打印,剩下的行打印,取消默认输出. 2.sed -n '1~2p' datafile 该条命令的意思是:每两行读取datafile文件到模式空间,匹配每两行中的第一行,打印,剩下的行不打印,取消默认输出. 3.sed '1~2d' datafile 这条命令和第一条命令等同. 附:Linux中sed的命令手册相关解释 first~step