sed常用用法总结

sed是Stream EDitor流编辑器的缩写,是GNU的软件项目,项目地址http://www.gnu.org/software/sed/ , 和grep,awk一起为视为linux下文字处理三大神器。

sed的工作原理:简单的讲就是读取一行到内存,处理完再读取下一行,一直到最后一行。

稍微详细一点讲就是读取一行放到模式空间(sed在内存申请的一段内存空间),被模式匹配到则按给定的Action处理,处理完则继续读入下一行,如果没有被模式匹配到则直接继续进入下一步。如果没有给模式则默认是空模式,处理所有的行。

上列子:

  1. sed /^#/p /etc/fstab    把/etc/fstab文件中#开头的行打印到屏幕

    1. 选项要放在单引号里,/这里面是模式,支持正则表达式/,p是动作action,表示打印,可以看到这样的话#开头的行会在屏幕上打印两遍,这是因为默认会把模式空间的内容输出到屏幕,可以加-n参数(--quiet | --slient)静默模式,就不会把没被模式匹配到的打印出来了。
  2. sed -n ‘/^#/!p‘ /etc/fstab    -n 静默输出,!取反,#开头的行不打印,模式里面不支持取反
  3. sed -n ‘/bash$/=‘ /etc/passwd    =也是命令,打印匹配到的行的行号
  4. sed -n ‘1,3p;8,/^mail/p;/^tcpdump/,/^bob/p‘ /etc/passwd

sed的地址定界符,打印第1到3行;从第8行开始到第一次匹配到mail开头的行结束;从第一次匹配到tcpdump开头的行开始,到第一次匹配到bob开头的行结束。各个命令段之间用分号分隔。

Tips:如果后面还有tcpdump开头的行则继续往后匹配,直到再次匹配到bob开头的行,如果没有则到最后一行

5. sed ‘/CentOS/a \sed‘ /etc/issue 在CentOS后面的一行加上一段文字,i则是在前面一行,c是将匹配到的内容直接替换成反斜杠后面的文字。

6.  which ls | sed ‘/^alias/d;s/[[:space:]]//g‘ 获取ls命令的路径,s同vim中的查找替换命令使用方法一样,把空格全部换成什么都没有

7.

[[email protected] ~]# cat << EOF >> lier 
> Whom lione is a lioner.
> Jerry
> Tom
> EOF
[[email protected] ~]# sed -n ‘/\(l..n\).*\1r/p‘ lier   # 正则表达式
Whom lion is a lionr.
[[email protected] ~]# sed -rn ‘/(l..n).*\1r/p‘ lier    # -r 使用扩展的正则表达式
Whom lion is a lionr.
[[email protected] ~]# sed -i.bak ‘s/lion/lie/g‘ lier   # -i | --in-place把模式空间内容写入
# 原文件,i后面可以加上后缀,则会在覆盖原文件前先生成一个以原文件名+后缀为文件名的副本
[[email protected] ~]# ls lie*
lier  lier.bak
[[email protected] ~]# cat lier.bak 
Whom lion is a lionr.
Jerry
Tom
[[email protected] ~]# cat lier
Whom lie is a lier.
Jerry
Tom

8.

[[email protected] ~]# sed ‘3r /etc/issue‘ /etc/fstab     # 在第三行后面读取/etc/issue文件

#
# /etc/fstab
CentOS release 6.2 (Final)
Kernel \r on an \m

# Created by anaconda on Fri Dec 21 19:29:44 2012
#
# Accessible filesystems, by reference, are maintained under ‘/dev/disk‘
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/VolGroup-lv_root /                       ext4    defaults        1 1
UUID=c35f26c4-3870-4122-b32f-99d177987eae /boot                   ext4    defaults        1 2
/dev/mapper/VolGroup-lv_swap swap                    swap    defaults        0 0
tmpfs                   /dev/shm                tmpfs   defaults        0 0
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
sysfs                   /sys                    sysfs   defaults        0 0
proc                    /proc                   proc    defaults        0 0
/dev/sdb1               /bak                    ext4    defaults        1 2 
[[email protected] ~]# sed -n ‘/^\/dev/w /root/fstab‘ /etc/fstab     # 把模式到的内容写入到/root/fstab文件中
[[email protected] ~]# cat fstab
/dev/mapper/VolGroup-lv_root /                       ext4    defaults        1 1
/dev/mapper/VolGroup-lv_swap swap                    swap    defaults        0 0
/dev/sdb1               /bak                    ext4    defaults        1 2 
[[email protected] ~]#
时间: 2024-11-10 13:03:40

sed常用用法总结的相关文章

linux sed常用用法总结

sed是linux中比较常用的文本编辑类命令,规则为逐行输出 其比较常用的用法如下: sed [OPTION] {SCRIPT} FILENAME 主要[OPTION]: -n:不再显示默认模式空间中的内容 -i:修改源文件 -e:同时执行多个操作 例如:sed -e {SCRIPT} -e {SCRIPT} ... -f:指定脚本文件处理文本内容 例如:sed -f SCRIPTNAME FILENAME -r:允许使用扩展的正则表达式(同grep -e 或者 egrep) {SCRIPT}可

sed常用用法技巧举例

1.sed替换换行符及标签的使用 echo "a,b,c,d" |sed 's/,/\n/g'|sed 's/\n/,/g' 解析:以上命令实现不了替换换行符,这跟sed的行处理方式有关,sed读取一行时,会先把换行符去掉,处理完后再添加上,所以是无法使用上面的命令进行换行符替换的,必须使用sed中的其它命令来完成.上面的恢复可以使用tr命令: echo "a,b,c,d" |sed 's/,/\n/g'|tr -t '\n' ',' 以下命令能实现替换文本中全部换

GUN sed高级用法,sed脚本编写

这里举一些sed常用的高级用法例子经供参考: 一下操作都针对file.txt文件作修改 [[email protected] ~]# cat file.txt libgcc-4.4.7-4.el6.x86_64 setup-2.8.14-20.el6_4.1.noarch tzdata-2013g-1.el6.noarch jakarta-commons-collections-3.2.1-3.4.el6.noarch filesystem-2.4.30-3.el6.x86_64 mesa-dr

sed基本用法

Sed是行处理命令,处理的过程是逐行将需要处理数据读入到模式空间处理,处理完成打印(默认)模式空间内容并清空模式空间,所以除非是添加特殊参数(-i),否则sed是不会修改文本内容,参数(-n)是不打印缓存空间内容,其他参数内容见下列表 常用选项 命令 功能 -n 屏蔽模式空间的自动打印,否则每行处理结束会自动打印 -i 在适当的位置修改文件(直接在文件中修改,慎用!!!) -r 使用扩展正则表达式 -e 多项操作 -f 添加脚本文件内容到命令 定址查找 Shell> Seq 3| sed –n

linux中sed的用法

sed命令行格式为:         sed [-nefri]  'command'  输入文本/文件 常用选项:        -n∶取消默认的输出,使用安静(silent)模式.在一般 sed 的用法中,所有来自 STDIN的资料一般都会被列出到屏幕上.但如果加上 -n 参数后,则只有经过sed 特殊处理的那一行(或者动作)才会被列出来        -e∶进行多项编辑,即对输入行应用多条sed命令时使用. 直接在指令列模式上进行 sed 的动作编辑        -f∶指定sed脚本的文件

sed简单用法

-n∶取消默认的输出,使用安静(silent)模式.在一般 sed 的用法中,所有来自 STDIN的资料一般都会被列出到屏幕上.但如果加上 -n 参数后,则只有经过sed 特殊处理的那一行(或者动作)才会被列出来 -e∶进行多项编辑,即对输入行应用多条sed命令时使用. 直接在指令列模式上进行 sed 的动作编辑 -f∶指定sed脚本的文件名. 直接将 sed 的动作写在一个档案内, -f filename 则可以执行 filename 内的sed 动作 -r∶sed 的动作支援的是延伸型正则表

linux之sed的用法

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

shell编程(七)--- sed的用法

sed:称为流编辑器,也称为行编辑器. sed处理过程:sed读取源文件中的一行,并将其放在临时缓冲区中,这个缓冲区称为模式空间,使用相应的模式对模式空间进行处理,并将处理的结果显示到屏幕上,并不会影响源文件,处理结束后,将模式空间中的内容显示至屏幕. sed格式: sed [options] 'AddressCommand' file ... options: -n:静默模式,不显示模式空间中的内容,默认显示默认空间中的内容.常和p命令一起使用. -i:直接修改源文件的内容. -e 'Addr

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:静默模式,不再默认显示模式空间中的内容,即只显示