Linux sed命令小结

1.什么是sed

sed,流编辑器,即stream editor。它可以将文本文件的每一行读取到内存,即所谓sed的模式空间,在这个模式空间中可以进行编辑并输出。

2.sed的使用格式

sed [options] "AdressCommand" file1,file2,...

说明:


a.Adress实际上是用来确定编辑文件的范围,可以是精确的某一行,也可以是从某一行到某一行,也   可以用正则进行过滤匹配。

b.Command表示将符合Address的行进行XXX操作。注意默认情况下,sed只对模式空间的内容进行编辑并不会直接处理文本文件。

c.常用options有,-n (表示静默模式), -i(将对文本文件中的内容进行直接修改) 等。

3.sed的使用心得


心得一:如果我们不给address,那么表示全部,p命令表示print pattern space,因此会打印两份。p命令常与-n选项进行配合。

[[email protected] ~]# sed ‘p‘ /etc/fstab
LABEL=/                 /                       ext3    defaults        1 1
LABEL=/                 /                       ext3    defaults        1 1
LABEL=/home             /home                   ext3    defaults        1 2
LABEL=/home             /home                   ext3    defaults        1 2
LABEL=/boot             /boot                   ext3    defaults        1 2
LABEL=/boot             /boot                   ext3    defaults        1 2
tmpfs                   /dev/shm                tmpfs   defaults        0 0
tmpfs                   /dev/shm                tmpfs   defaults        0 0
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
sysfs                   /sys                    sysfs   defaults        0 0
sysfs                   /sys                    sysfs   defaults        0 0
proc                    /proc                   proc    defaults        0 0
proc                    /proc                   proc    defaults        0 0
LABEL=SWAP-sda5         swap                    swap    defaults        0 0
LABEL=SWAP-sda5         swap                    swap    defaults        0 0
[[email protected] ~]# sed -n ‘p‘ /etc/fstab
LABEL=/                 /                       ext3    defaults        1 1
LABEL=/home             /home                   ext3    defaults        1 2
LABEL=/boot             /boot                   ext3    defaults        1 2
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
LABEL=SWAP-sda5         swap                    swap    defaults        0 0
[[email protected] ~]#

心得二:Address常用的表示法有

startLine,endLine

startLine,+length

/regexp1/,/regexp2/

lineNumber

/regexp/

另外$表示最后一行

[[email protected] ~]# sed -n ‘1,3p‘ /etc/fstab
LABEL=/                 /                       ext3    defaults        1 1
LABEL=/home             /home                   ext3    defaults        1 2
LABEL=/boot             /boot                   ext3    defaults        1 2
[[email protected] ~]# sed -n ‘1,$p‘ /etc/fstab
LABEL=/                 /                       ext3    defaults        1 1
LABEL=/home             /home                   ext3    defaults        1 2
LABEL=/boot             /boot                   ext3    defaults        1 2
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
LABEL=SWAP-sda5         swap                    swap    defaults        0 0
[[email protected] ~]# sed -n ‘/^tmpfs/,/^proc/p‘ /etc/fstab
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
[[email protected] ~]# sed -n ‘2,+3p‘ /etc/fstab
LABEL=/home             /home                   ext3    defaults        1 2
LABEL=/boot             /boot                   ext3    defaults        1 2
tmpfs                   /dev/shm                tmpfs   defaults        0 0
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0

心得三:默认基本正则,支持扩展正则-r。分组及引用的概念也都适用。

[[email protected] ~]# sed -n ‘/boot/p‘ /etc/fstab
LABEL=/boot             /boot                   ext3    defaults        1 2
[[email protected] ~]# sed -n ‘/b..t/p‘ /etc/fstab
LABEL=/boot             /boot                   ext3    defaults        1 2
[[email protected] ~]# sed -n ‘/bo\{2,\}t/p‘ /etc/fstab
LABEL=/boot             /boot                   ext3    defaults        1 2
[[email protected] ~]# sed -nr ‘/bo{2,}t/p‘ /etc/fstab
LABEL=/boot             /boot                   ext3    defaults        1 2

心得四:常用COMMAND总结


d:delete current pattern space

p:print pattern space

a \string:append string to current pattern space

i \string:insert string to current pattern space

r file:read file content and append to current pattern space

w file:write current pattern space to file

s /regexp/string/:find lines that match the regexp and replace with the string in first

s /regexp/string/g:global

s /regexp/string/i:ingore case

s #regexp#string#:this # equals /

Linux sed命令小结,布布扣,bubuko.com

时间: 2024-12-25 14:24:31

Linux sed命令小结的相关文章

Linux常用命令小结(续)

20. mysql mysql --host=127.0.0.1 --port=3306 --database=test --user=test --password=test --default-character-set=utf8 21. 脚本求两个文件的相同集合 test1   test2 1           2 2           3 3           4 cat test1 test2 | sort | uniq -d (result: 2 3) cat test1 te

理解linux sed命令

理解linux sed命令(2010-02-27 18:21:20) 标签:linuxshellsed替换 分类:革命本钱 1. Sed简介sed是一种在线编辑器,它一次处理一行内容.处理时,把当 前处理的行存储在临时缓冲区中,称为"模式空间"(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕.接着处理下一行,这样不断重复,直到文件末尾.文件内容并没有改变,除非你使用重定向存储输出.Sed主要用来自动编辑一个或多个文件:简化对文件的反

[Shell&Mac&Environment variables]自己常用的Mac(或者说Linux)Shell命令小结,含Mac使用zsh shell的环境变量的有关配置方法

今天在使用tomcat的配置的时候,我用的mac,要是用到一些命令去配置tomcat. 问题来了: 我每次要去启动tomcat服务特别麻烦,因为我要先进入tomcat所在的文件目录,或者不进入使用~/,但是因为我把tomcat放到了一个比较“深“的文件夹里,所以命令显得又丑又长. 问题解决方案: 1.使用环境变量(修改.bashrc的方法) a.先查看自己的Mac目前正在用的是什么shell echo $SHELL 返回结果类似如下图 这里我是zsh,,也许你是bash,不过没关系,配置环境变量

linux sed命令中的正则表达式问号、加号、圆括号等需要转义

linux sed命令内的正则表达式语法分两种,一种叫Basic (BRE) Syntax,另一种叫Extended (ERE) Syntax.默认使用的是BRE. 这个BRE就是一个简化版,语法稍微有点不一样,问号.加号.圆括号.花括号和竖线没有特殊含义,就代表字符本身,如果要原本定义的实现特殊含义,需要用反斜杠(\)转义……详情请见: https://www.gnu.org/software/sed/manual/html_node/BRE-vs-ERE.html#BRE-vs-ERE

linux下的sed命令小结

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

Linux Sed命令学习笔记

1 功能说明 sed是一种在线编辑器,它一次处理一行内容.处理时,把当前处理的行存储在临时缓冲区中,称为"模式空间"(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕.接着处理下一行,这样不断重复,直到文件末尾.文件内容并没有改变,除非你使用重定向存储输出或者加入i参数.Sed主要用来自动编辑一个或多个文件:简化对文件的反复操作:编写转换程序等. 小结:sed的功能是,对字符串进行增加.删除.改变.查找,即增删改查! 2 语法格式 s

linux sed命令详解

Linux环境:Ubuntu16.04 sed命令 http://www.cnblogs.com/ggjucheng/archive/2013/01/13/2856901.html http://blog.csdn.net/yiqingnian28/article/details/23133043 正则表达式 http://blog.csdn.net/wzzfeitian/article/details/8842371 sed -help 查看sed的用法 -n, --quiet, --sile

2.2 linux sed命令详解

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

Linux sed命令使用

sed基本用法: sed:stream Editor 行编辑器 sed:模式空间 默认不编辑源文件,仅对模式空间中的数据做处理,处理结束后,将模式空间内容打印出来 sed  [options]'AddressCommand' file ... 是对file中的文件中的符合Address指定地址范围内的行执行Command编辑命令 options: -n:静默模式 不显示模式空间中的内容,仅显示被匹配的内容 -i:直接修改原文件 -e SCRIPT(脚本) -e SCRIPT:可以同时执行多个脚本