sed 命令用法

关于sed的使用方法总结及实践

流编辑器

一次从文件中读出一行,放在自己的工作车间里,不会去改原来的文件内容,把pattern space之后的处理结果,输出到标准输出stdout

-n 使用安静模式,在一般的sed用法中,所有的stdin的数据都会输出到屏幕上,加上-n之后,只有经过sed特殊处理的哪一行才会输出到屏幕上

-e直接在命令模式上进行动作编辑

-f直接将sed的动作写进一个文件里

-r sed的动作支持扩展正则表达式

-i直接修改源文件内容   写脚本可能会用到

地址定界

d表示删除,删除模式空间内容

a表示在行首添加

i表示在行尾添加

p表示打印打印模式空间内容

c表示替换

w保存文本后边是保存的路径

catabc123

helloworld

\helloworld

[[email protected]]$ sed ‘1,2d‘ abc123

[[email protected]]$ cat abc123

helloworld

\helloworld

仍然能显示出abc123的内容,由于sed默认是不改变源文件的

加-i只写修改源文件

[[email protected]]# sed ‘/^d/d‘ abc123

a

b

c

hello

world

删除以d 开头的行

[[email protected]]# sed ‘1~2d‘ abc123

a

c

hello

以第一行开始,步进为2。表示所有奇数行。

匹配到奇数行之后,放进模式空间,再删除。

之后把模式空间和原来没匹配的内容都输出出来。

其实输出的是偶数行。

sed -n ‘1~2d‘ abc123开启静默模式后,不输出没匹配到的了。

[[email protected]]# sed -n ‘1~2p‘ abc123

b

d

world

p表示把模式空间内部的输出来。,由于是静默模式,其他没匹配的不输出。

[[email protected]]# sed  ‘1~2p‘ abc123

a

b

b

c

d

d

hello

world

world

关掉静默模式,那些匹配到的内容,会输出两次,重复。

[[email protected]]# sed ‘/^hello/a\#add new line‘ abc123

a

b

c

d

hello

#add new line

World

修改某些符合条件的内容

[[email protected]]# sed ‘/^hello/c \#change new line‘ abc123

a

b

c

d

#changenew line

World

sed ‘/^[^#]/w /home/craft/shell/new‘ abc123      ^[^#]    和!^#一样

[[email protected]]# cat new

a

b

c

d

hello

World

编辑命令:

d:删除;

p:显示模式空间中的内容;

a \text:在行后面追加文本“text”,支持使用\n实现多行追加;

i \text:在行前面插入文本“text”,支持使用\n实现多行插入;

c \text:把匹配到的行替换为此处指定的文本“text”;

w /PATH/TO/SOMEFILE:保存模式空间匹配到的行至指定的文件中;

r /PATH/FROM/SOMEFILE:读取指定文件的内容至当前文件被模式匹配到的行后面;文件合并;

=:为模式匹配到的行打印行号;

!:条件取反;

地址定界!编辑命令;

s///:查找替换,其分隔符可自行指定,常用的有[email protected]@@, s###等;

替换标记:

g:全局替换;

w/PATH/TO/SOMEFILE:将替换成功的结果保存至指定文件中;

p:显示替换成功的行;

s查找替换

g全局替换

w替换的结果保存到某文件中

p显示替换成功的行

练习1:删除/boot/grub/grub2.cfg文件中所有以空白字符开头的行的行首的所有空白字符;

~]# sed  ‘[email protected]^[[:space:]]\+@@‘ /etc/grub2.cfg +表示多个空白

@要替换内容@替换内容@    两个@@表示,用空替换也就是删除

练习2:删除/etc/fstab文件中所有以#开头的行的行首的#号及#后面的所有空白字符;

~]#sed  ‘[email protected]^#[[:space:]]*@@‘  /etc/fstab

练习3:输出一个绝对路径给sed命令,取出其目录,其行为类似于dirname;

~]# echo "/var/log/messages/" | sed ‘[email protected][^/]\+/\[email protected]@‘  []表示行尾  从行尾开始找,非斜线的替换为空

~]# echo"/var/log/messages" | sed -r ‘[email protected][^/]+/[email protected]@‘

时间: 2024-10-08 13:27:35

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命令用法

注意:Linux三大文本查找工具:grep.sed.awk. sed命令基本用法: Stream EDitor:行编辑器:实现逐行处理文本:而全屏编辑器是vim. 工作特性: 并不处理文本文件本身,而是处理文件内容时,是逐行的把文本加载至内存空间中,在内存中完成处理,然后再输出到屏幕上,对sed而言,内存空间叫模式空间,可对文本行进行模式匹配后再做处理,sed有许多编辑命令. sed命令默认不编辑原文件,仅对模式空间中的数据做处理,而后,处理结束后,将模式空间的内容显示至屏幕. sed命令格式

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