sed命令基础及高级用法

sed工具:sed是文本流编辑器,逐行对文件的内容进行处理

用法:sed [option] ... ‘script‘ inputfile...

选项:

-n:静默模式,不输出模式空间的内容至屏幕

-e:实现多点的功能编辑

-f /path/from/script_file:从指定的文件读取编辑脚本

-r:支持使用扩展的正则表达式

地址界面方法:

(1)不给地址:对全文进行处理

(2)一个地址(单地址)

#:指定的行

/pattern/:被引用处模式所能够匹配到的每一行:

(3)地址范围

#,#:从第几行到第几行

#,+#:显示从第几行开始向后的N行

/pat1/,/pat2/:同时匹配2个参数,表示匹配这2个参数之间的所有行

#,/pat1/:表示匹配这2个参数之间的所有行

(4)~:步进

#sed -n ‘1~2p’ test.txt(第一行开始,每次增加2行,意思就是显示奇数行)

#sed -n ‘2~2p’ test.txt(从第二行开始显示,每次增加2行,意思就是显示偶数行)

编辑命令:

d:删除被地址界定选定的内容

p:显示(打印)模式空间中的内容到屏幕上,只打印符合条件的行,常于-n结合一起使用

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

例: #sed ‘/^T/a \abc‘ a.txt

i \text:在行前面一行追加文本:支持使用\n实现多行追加;

例:# sed ‘/^T/i \abc‘ a.txt

c \text:替换匹配到的行:

例:# sed ‘/^T/c \abc‘ a.txt

w /path/to/somefile:保存模式空间中匹配到的内容至指定文件中;

r /path/from/somefile:读取指定文件的文本游戏 至模式空间中匹配到的行后;

=:为模式空间中的行,打印行号;

例:#sed -n ‘/^T/=‘ a.txt

q:一旦匹配到内容,则退出;不再往下匹配

!:取反条件;对除了模式匹配到的行以外的行,进行操作;

s///:支持使用其它分隔符,[email protected]@@,s###

替换标记:

g:行内全局进行替换:例:sed -n ‘[email protected]@&[email protected]’ /etc/passwd  不带g选项,只替换每一行的第一次

#:行内替换,替换第几次出现的匹配的内容,例:sed -n ‘s/Unix/UNIX/2p‘ a.txt,把第2次出现的Unix替换

p:如果替换成功,则显示替换成功的行,与-n一起使用

w /path/to/somefile:将替换成功的行保存至指定文件中

练习1:删除/boot/grub/grub.conf文件中所有以空白开头的行行首的空白字符          #sed ‘[email protected]^[[:space:]]\[email protected]@‘ /boot/grub/grub.conf

练习2:删除/etc/fstab文件中所有以#开头,后面至少跟一个空白字符的行的行首的#和空白字符

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

练习3:echo一个绝对路径给sed命令,取出其基名:

#echo "/etc/sysconfig" | sed ‘[email protected][^/]\[email protected]@‘

高级编辑命令:

h:把模式空间中的内容覆盖至保持空间中;

H:把模式空间的内容追加至保持空间中;

g:从保持空间取出数据覆盖至模式空间;

G:从保持空间取出数据追加至模式空间;

x:把模式空间中内容与保持空间中的内容进行互换操作;

n:读取匹配到的行的下一行至模式空间;

N:追加匹配到的行的下一行至模式空间;

d:删除模式空间中的所有行;

D:删除多行模式空间中的第一行;

示例用法:

#sed -n ‘n;p’ FILE(最出偶数行)

#sed ‘1!G;h;$!d’ test.txt(逆行显示文件内容)

#sed ‘$!N;$!D’ test.txt(读文件的后2行)

#sed ‘$!d’ test.txt(最出文件最后一行)

#sed ‘G’ test.txt(在每一行下面加一个空白行)

#sed ‘/^$/d;G’ test.txt(每行间只保留一个空白行)

#sed ‘n;d’ test.txt(只显示奇数行)

#sed -n ‘1!G;h;$p’ test.txt

时间: 2024-10-14 12:38:56

sed命令基础及高级用法的相关文章

sed命令基础用法

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

1.10-linux三剑客之sed命令详解及用法

内容: 1.sed命令介绍 2.语法格式,常用功能 查询  增加  替换 批量修改文件名 第1章 sed是什么 字符流编辑器 Stream Editor 第2章 sed功能与版本 处理出文本文件,日志,配置文件等 增加,删除,修改,查询 sed  --version sed  -i 修改文件内容 第3章 语法格式 3.1 语法格式 sed [选项] [sed指令] [输入文件] sed -i.bak 's#oldboy#oldgril#g' oldbboy.txt 先备份在修改 -i   ---

#define命令的一些高级用法

=========================================================== define中的三个特殊符号:#,##,#@ =========================================================== #define Conn(x,y) x##y #define ToChar(x) #@x #define ToString(x) #x (1)x##y表示什么?表示x连接y,举例说: int n = Conn(12

Linux系统中sed命令在文件的用法

一.批量在文件某行插入内容: 1 find -type f -name "*.pcf" |xargs sed -i '/aaaa/a\bbbb/' 2 find -type f -name "*.pcf" |xargs sed -i '/aaaa/i\bbbb/' 其中a\表示在包含"aaaa"的行后面一行加入"bbbb";i\表示在前面一行加入. 二.批量替换文件内容: 1 find -type -f -name "

Linux之sed命令的使用

Linux系统维护过程中,常通过自动脚本来处理运维方面的工作,而作为运维最常用语言即SHELL来完成脚本.而涉及到替换时我们常使用SED来完成替换工作. 这里简单归纳一下SED的功能,以方便后续脚本中的应用 SED最基本的格式遵循以下形式: sed [OPTION]...{script-only-if-no-other-script} [input-file]... [OPTION]中常用的是-e -i -e 表示被修改后的对象在命令行展示出来,但对象本身实际没有进行修改.你可以理解为仅展现修改

文本三剑客之一 “sed”的基础用法和高级用法

sed工具: 用法: sed [option]- 'script' inputfile- 常用选项: -n:不输出模式空间内容到屏幕,即不自动打印[[email protected] ~]# sed -n -e "2p" -e "6p" f1 (2:6代表处理第几行)-e: 多点编辑-f:/PATH/SCRIPT_FILE: 从指定文件中读取编辑脚本-r: 支持使用扩展正则表达式-i.bak: 备份文件并原处编辑 script: '地址命令' 地址定界: (1) 不

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

linux基础之sed命令

Sed 流 编 辑 器 1.sed的基本用法: sed  [OPTION]...  'script' input-file... 2.sed:Stream   Editor  文本编辑器 行编辑器(全屏编辑器:vi) 3.sed:模式空间 默认不编辑源文件,仅对模式空间中的数据做处理,而后,处理结束后,讲模式空间打印至屏幕 1>.常用选项: -n  : 静默模式,不再默认显示模式空间的内容: -i   : 直接修改源文件: -e  : script   -escript    可以同时执行多个脚

Linux基础 详解sed命令

概述 sed是一个流编辑器(Stream EDitor).主要用于自动编辑一个或多个文件:简化对文件的反复操作:编写转换程序等.本文主要讲述了: sed工作原理 sed命令格式及常用选项 应用实例 高级编辑命令 sed工作原理 sed命令运行过程中维护着两个缓冲区,一个是活动的"模式空间(pattern space)",另一个是起辅助作用的"暂存缓冲区(holding space)".sed每次处理一行内容,整个文件像流水一样被逐行处理然后逐行输出.处理时,把当前处