SED+手册
转贴 SED 手册1.IntroductionSed(Stream EDitor)为 UNIX 系统上提供将编辑工作自动化的编辑器 , 使用者无需直接编辑数据。
使用者可利用 sed 所提供 20 多种不同的函数参数 , 组合(批注 [1])它们完成不同的编辑动作。
此外 , 由于 sed 都以行为单位编辑文件 , 故其亦是行编辑器(line editor)。
一般 sed 最常用在编辑那些需要不断重复某些编辑动作的档上 , 例如将文件中的某个字符串替换成另一个字符串等等。
这些相较于一般 UNIX 编辑器(交谈式的, 如 vi、emacs)用手动的方式修改檔 , sed 用起来较省力。
下面几节将分别介绍:何时使用 sed何处获得 sedsed 能做那些编辑动作sed 如何工作1.1 何时使用 sed在修改檔时 , 如果不断地重复某些编辑动作 , 则可用 sed 自动一次执行这些编辑动作。
例如要使 received 文件内 1000 封电子信件内的发信人属名 "Tom" 改成 "John" , 此时只要在命令列上执行一简单的 sed 命令就可把檔内所有的 "Tom" 字符串替换成 "John"。
再者 , 当檔需要许多不同编辑动作时 , 则 sed 一次可执行那些不同的编辑动作。
例如sed 能一次执行完将檔中所有空白行删除、替换字符串、并将使用者输入的文字添加在文件的第六行等等不同的编辑动作。
1.2 何处获得 sed一般的 UNIX 系统 , 本身即附有 sed。
不同的 UNIX 系统所附的 sed 版本亦不尽相同。
若读者所使用的 UNIX 系统上未附有 sed , 则可透过 anonymous ftp 到下列地方去取得 : .tw:/pub/GNU/gnu.tw:/unix/gnu.tw:/UNIX/gnu.tw:/pub/Unix/GNU.tw: /pub3/UNIX/gnu.tw:/Packages/gnu.tw :/pub2/gnu.tw :/pub/unix/gnu.tw :/pub1/UNIX/gnu.tw:/pub/gnu1.3 sed 能做那些编辑动作sed 可删除(delete)、改变(change)、添加(append)、插入(insert)、合并、交换文件中的数据行 , 或读入其它文件的数据到文件中 , 也可替换(substuite)它们其中的字符串、或转换(tranfer)其中的字母等等。
例如将檔中的连续空白行删成一行、 "local" 字符串替换成"remote" 、"t" 字母转换成 "T"、将第 10 行数据与第 11 数据合并等。
1.4 sed 如何工作如同其它 UNIX 命令 , sed 由标准输入读入编辑文件并由标准输出送出结果。
下图表示sed 将资料行 "Unix" 替换成 "UNIX" ,在图中 , 上方 standard input 为标准输入 , 是读取数据之处; standard output 为标准输出 , 是送出结果之处 ; 中间 sed 方块的下面两个虚线方块表示 sed 的工作流程。
其中 , 左边虚线方块表示 sed 将标准输入数据置入 pattern space , 右边虚线方块表示 sed 将 pattern space 中编辑完毕后的数据送到标准输出。
在虚线方块中 , 两个实线方块分别表示 pattern space 与 sed script。
其中, pattern space 为一缓冲区 , 它是 sed 工作场所 ; 而 sed script 则表示一组执行的编辑指令。
在图中, 左边虚线方块 "Unix" 由标准输入置入pattern space ; 接着 , 在右边虚线方块中 , sed 执行 sed script 中的编辑指令 s/Unix/UNIX/ (批注 [2]) , 结果 "Unix" 被替换成"UNIX" , 之后 , "UNIX" 由 pattern space 送到标准输出。
总合上述所言 , 当 sed 由标准输入读入一行数据并放入 pattern space 时 , sed 依照 sed script 的编辑指令逐一对 pattern space 内的数据执行编辑 , 之后 , 再由 pattern space 内的结果送到标准输出 , 接着再将下一行数据读入。
如此重复执行上述动作 , 直至读完所有数据行为止。
2.使用 sedSed 命令列可分成编辑指令与文件文件部份。
其中 , 编辑指令负责控制所有的编辑工作 ; 檔檔表示所处理的档案。
sed 的编辑指令均由位址(address)与函数(function)两部份组成 , 其中 , 在执行时 , sed 利用它的地址参数来决定编辑的对象;而用它的函数参数(批注[3])编辑。
此外 , sed 编辑指令 , 除了可在命令列上执行 , 也可在档案内执行。
其中差别只是在命令列上执行时 , 其前必须加上选项 -e ; 而在档案(批注[4])内时 , 则只需在其文件名前加上选项 -f。
另外 , sed 执行编辑指令是依照它们在命令列上或檔内的次序。
下面各节 , 将介绍执行命令列上的编辑指令、sed 编辑指令、执行档案内的编辑指令、执行多个档案的编辑、及执行 sed 输出控制。
2.1 执行命令列上的编辑指令2.2 sed 编辑指令2.3 执行档案内的编辑指令2.4 执行多个档案的编辑2.5 执行 sed 输出控制2.1.执行命令列上的编辑指令当编辑指令(参照[section 2.2])在命令列上执行时 , 其前必须加上选项 -e 。
其命令格式如下 :sed -e '编辑指令1' -e '编辑指令2' ... 文件檔其中 , 所有编辑指令都紧接在选项 -e 之后 , 并置于两个 " ' " 特殊字符间。
另外 , 命令上编辑指令的执行是由左而右。
一般编辑指令不多时 , 使用者通常直接在命令上执行它们。
例如 , 删除 yel.dat 内 1 至 10 行数据 , 并将其余文字中的 "yellow" 字符串改成 "black" 字符串。
此时 , 可将编辑指令直接在命令上执行 , 其命令如下 :sed -e '1,10d' -e 's/yellow/black/g' yel.dat在命令中 , 编辑指令 '1,10d'(批注[5])执行删除 1 至 10 行数据 ; 编辑指令's/yellow/black/g'(批注[6]) , "yellow" 字符串替换(substuite)成 "black" 字符串。
2.2 sed 的编辑指令sed 编辑指令的格式如下 :[address1[,address2]]function[argument]其中 , 地址参数 address1 、address2 为行数或 regular expression 字符串 , 表示所执行编辑的数据行 ; 函数参数 function[argument] 为 sed 的内定函数 , 表示执行的编辑动作。
下面两小节 , 将仔细介绍地址参数的表示法与有哪些函数参数供选择。
2.2.1 地址(address)参数的表示法实际上 , 地址参数表示法只是将要编辑的数据行 , 用它们的行数或其中的字符串来代替表示它们。
下面举几个例子说明(指令都以函数参数 d(参照[section4.2]) 为例) :删除文件内第 10 行数据 , 则指令为 10d。
删除含有 "man" 字符串的数据行时 , 则指令为 /man/d。
删除档内第 10 行到第 200 行数据, 则指令为 10,200d。
删除档内第 10 行到含 "man" 字符串的数据行 , 则指令为 10,/man/d。
接下来 , 以地址参数的内容与其个数两点 , 完整说明指令中位址参数的表示法(同样也以函数参数 d 为例)。
地址参数的内容:地址为十进制数 : 此数字表示行数。
当指令执行时 , 将对符合此行数的数据执行函数参数指示的编辑动作。
例如 , 删除数据文件中的第 15 行数据 , 则指令为 15d(参照[section4.2])。
其余类推,如删除数据文件中的第 m 行数据 , 则指令为 md 。
地址为 regular expression(参照[附录 A]):当数据行中有符合 regular expression 所表示的字符串时 , 则执行函数参数指示的编辑动作。
另外 , 在 regular expression 前后必须加上 "/"。
例如指令为 /t.*t/d , 表示删除所有含两 "t" 字母的数据行。
其中 , "." 表示任意字符; "*" 表示其前字符可重复任意次 , 它们结合 ".*" 表示两 "t" 字母间的任意字符串。
地址参数的个数 : 在指令中 , 当没有地址参数时 , 表示全部数据行执行函数参数所指示的编辑动作; 当只有一地址参数时 , 表示只有符合地址的数据行才编辑 ; 当有两个地址参数 , 如 address1,address2 时 , 表示对数据区执行编辑 , address1 代表起始数据行 , address2 代表结束资料行。
对于上述内容 , 以下面例子做具体说明。
例如指令为d其表示删除文件内所有数据行。
例如指令为5d其表示删除文件内第五行资料。
例如指令为1,/apple/d其表示删除资料区 , 由檔内第一行至内有 "apple" 字符串的数据行。
例如指令为/apple/,/orange/d其表示删除资料区 , 由檔内含有 "apple" 字符串至含有 "orange" 字符串的数据行2.2.2 有那些函数(function)参数下页表仲介绍所有 sed 的函数参数(参照[chapter 4])的功能。
函数参数功能: label 建立 script file 内指令互相参考的位置。
# 建立批注{ } 集合有相同位址参数的指令。
Linux命令高级技巧使用sed命令进行正则表达式替换和编辑
Linux命令高级技巧使用sed命令进行正则表达式替换和编辑Linux命令高级技巧:使用sed命令进行正则表达式替换和编辑sed(stream editor)是Linux命令中功能强大的文本处理工具之一,它可以通过正则表达式实现对文本的替换和编辑操作。
在本文中,我们将介绍使用sed命令进行正则表达式替换和编辑的高级技巧。
一、sed命令概述sed命令是Unix和类Unix系统中一种重要的文本处理工具,其主要用途是根据指定的规则对文本进行替换、删除、插入、选择等操作。
sed命令可以从标准输入或文件中读取数据,并将处理结果输出到标准输出或文件中。
二、使用sed进行替换操作1. 基本替换操作sed命令的基本格式是:```sed 's/old/new/' file```其中,s表示替换操作,old表示待替换的字符串,new表示替换后的字符串,file表示待处理的文件名。
2. 全局替换操作如果要对整个文本中的所有匹配项进行替换,可以使用g标志(global):```sed 's/old/new/g' file```这样可以确保将所有匹配项都替换掉。
3. 使用&符号引用匹配项在替换字符串时,可以使用&符号引用匹配到的字符串。
例如,要将文本中的所有数字替换为"number",可以使用以下命令:```sed 's/[0-9]*/number/g' file```其中,[0-9]*表示匹配一个或多个数字。
4. 引用特殊字符如果要替换的字符串中包含特殊字符,如换行符或制表符,可以使用反斜杠进行转义。
例如,要将文本中的制表符替换为一个空格,可以使用以下命令:```sed 's/\t/ /g' file```三、使用sed进行编辑操作除了替换操作,sed命令还可以进行其他编辑操作,如删除行、插入行和打印行等。
1. 删除匹配行要删除文本中匹配特定模式的行,可以使用d命令。
linux sed 删除路径
linux sed 删除路径在 Linux 上,sed 是一种强大的文本处理工具,可以用于删除路径,批量替换和编辑文件内容。
这里将介绍 sed 的基本用法来删除路径,并提供相关的参考内容。
要删除路径,我们可以使用 sed 命令中的 s 命令(替换命令)。
s 命令的基本语法是:```bashsed 's/要替换的内容/替换后的内容/g' 文件名```其中,要替换的内容可以使用正则表达式来匹配路径。
可以使用 `\` 来转义特殊字符,如 `/`。
需要将替换后的内容留空,表示删除路径。
g 表示全局替换,即一行中的所有匹配内容都会被替换。
下面是一个例子,假设我们有一个名为 paths.txt 的文件,其中包含多个文件路径:```/home/user/file1.txt/home/user/file2.txt/home/user/file3.txt```现在,我们想要删除路径,只保留文件名部分。
可以使用 sed命令来实现:```bashsed 's/\/home\/user\///g' paths.txt```运行以上命令后,会得到如下输出:```file1.txtfile2.txtfile3.txt```这里使用了正则表达式 `/\/home\/user\///` 来匹配路径中的`/home/user/`,并将其替换为空,即删除路径。
当然,sed 提供了很多其他功能和选项,可以根据不同的需求进行更复杂的操作。
需要注意的是,在使用 sed 命令删除路径时,要确保正则表达式能够准确匹配路径,以免删除错误的内容。
除了以上的基本用法,还有其他一些参考的相关内容,供进一步学习和深入理解 sed 命令的使用。
1. sed 命令的官方文档:可以通过在终端中输入 `man sed` 来查看 sed 命令的手册页。
手册页提供了 sed 命令的详细说明和各种选项的使用方法,是一个非常全面和权威的参考资料。
sed高级用法
sed高级用法sed是一种流编辑器,用于在文本流中进行编辑操作。
除了基本用法之外,sed还具有许多高级用法。
以下是一些常见的高级用法: 1. 使用正则表达式替换文本:sed可以使用正则表达式来替换文本。
例如,要将所有出现的“apple”替换为“orange”,可以使用以下命令:sed 's/apple/orange/g' filename这将在“filename”中找到所有出现的“apple”并将其替换为“orange”。
2. 删除指定行:要删除文件中的特定行,可以使用以下命令: sed 'Nd' filename这将删除文件中的第N行。
例如,要删除文件中的第5行,可以使用以下命令:sed '5d' filename3. 在特定行之前或之后插入文本:要在特定行之前或之后插入文本,可以使用以下命令:sed '/pattern/i text' filename这将在匹配“pattern”的行之前插入“text”。
要在匹配“pattern”的行之后插入文本,可以使用以下命令:sed '/pattern/a text' filename4. 搜索并打印指定行:要搜索文件中的特定行并将其打印出来,可以使用以下命令:sed -n '/pattern/p' filename这将在文件中搜索匹配“pattern”的行,并将其打印出来。
5. 批量编辑多个文件:要在多个文件中进行批量编辑,可以使用以下命令:sed -i 's/apple/orange/g' file1 file2 file3这将在“file1”、“file2”和“file3”中查找并替换所有出现的“apple”为“orange”。
这些仅仅是sed高级用法的一些示例,你可以参考sed的文档来了解更多的用法。
linuxsed命令详解(推荐)
linuxsed命令详解(推荐)概述sed命令是⼀个⾯向字符流的⾮交互式编辑器,也就是说sed不允许⽤户与它进⾏交互操作。
sed是按⾏来处理⽂本内容的。
在shell中,使⽤sed来批量修改⽂本内容是⾮常⽅便的。
sed命令的选项sed [选项] [动作]选项与参数:-n :使⽤安静(silent)模式。
在⼀般 sed 的⽤法中,所有来⾃ STDIN 的数据⼀般都会被列出到终端上。
但如果加上 -n 参数后,则只有经过sed 特殊处理的那⼀⾏(或者动作)才会被列出来。
-e :直接在命令列模式上进⾏ sed 的动作编辑;-f :直接将 sed 的动作写在⼀个⽂件内, -f filename 则可以运⾏ filename 内的 sed 动作;-r :sed 的动作⽀持的是延伸型正规表⽰法的语法。
(默认是基础正规表⽰法语法)-i :直接修改读取的⽂件内容,⽽不是输出到终端。
function:a :新增⾏, a 的后⾯可以是字串,⽽这些字串会在新的⼀⾏出现(⽬前的下⼀⾏)c :取代⾏, c 的后⾯可以接字串,这些字串可以取代 n1,n2 之间的⾏d :删除⾏,因为是删除,所以 d 后⾯通常不接任何参数,直接删除地址表⽰的⾏;i :插⼊⾏, i 的后⾯可以接字串,⽽这些字串会在新的⼀⾏出现(⽬前的上⼀⾏);p :列印,亦即将某个选择的数据印出。
通常 p 会与参数 sed -n ⼀起运⾏s :替换,可以直接进⾏替换的⼯作,通常这个 s 的动作可以搭配正规表⽰法,例如 1,20s/old/new/g ⼀般是替换符合条件的字符串⽽不是整⾏⼀般function的前⾯会有⼀个地址的限制,例如 [地址]function,表⽰我们的动作要操作的⾏。
下⾯我们通过具体的例⼦直观的看看sed的使⽤⽅法。
删除⾏//test.txt 内容如下11 aa22 bb33 cc23 dd55 2esed '1,2d' test.xx输出:33 cc23 dd55 2e其中1,2d中的d表⽰删除,⽽d前⾯的表⽰删除的⾏的地址,⽽1,2表⽰⼀个地址范围,也就是删除第1⾏和第2⾏。
sed 命令详解 很全的
Linux sed命令实例详解功能说明:利用script来处理文本文件。
语法:sed [-hnV][-e]补充说明:sed可依照script的指令,来处理、编辑文本文件。
参数:-e<script>或—expression=<script> 以选项中指定的script来处理输入的文本文件。
-f文件>或—file=<script文件> 以选项中指定的script文件来处理输入的文本文件。
-h或—help 显示帮助。
-n或—quiet或--silent 仅显示script处理后的结果。
-V或—version 显示版本信息。
# sed -e 's/123/1234/' a.txt将a.txt文件中所有行中的123用1234替换(-e表示命令以命令行的方式执行;参数s,表示执行替换操作)# sed -e '3,5 a4' a.txt将a.txt文件中的3行到5行之间所有行的后面添加一行内容为4的行(参数a,表示添加行,参数a后面指定添加的内容)# sed -e '1 s/12/45/' a.txt把第一行的12替换成45sed -i "s/oldstring/newstring/g" `grep oldstring -rl yourdir`批量处理通过grep搜索出来的所有文档,将这些文档中所有的oldstring用newstring 替换(-i参数表示直接对目标文件操作)$ sed -n 's/^test/mytest/p' example.file(-n)选项和p标志一起使用表示只打印那些发生替换的行。
也就是说,如果某一行开头的test被替换成mytest,就打印它。
(^这是正则表达式中表示开头,该符号后面跟的就是开头的字符串)(参数p表示打印行)$ sed 's/^wangpan/&19850715/' example.file表示被替换换字符串被找到后,被替换的字符串通过&符号连接给出的字符串组成新字符传替换被替换的字符串,所有以wangpan开头的行都会被替换成它自已加19850715,变成wangpan19850715$ sed -n 's/\(love\)able/\1rs/p' example.filelove被标记为1,所有loveable会被替换成lovers,而且替换的行会被打印出来。
使用sed命令进行行删除和替换
使用sed命令进行行删除和替换简介:sed(stream editor)是Linux系统中用于流编辑的一种强大工具,它能够实现对文本文件的修改、匹配、删除和替换等操作。
本文将介绍sed命令的使用方法,着重讨论行删除和替换功能。
一、行删除1. 删除单行要删除文件中的某一行,可以使用sed命令的“d”选项。
例如,删除文件中第5行的内容,可以使用以下命令:```shellsed '5d' filename```这样就会删除文件filename中的第5行。
2. 删除多行要删除文件中的多行,可以使用以下命令:```shellsed '2,5d' filename```这样会删除文件filename中的第2行到第5行的内容。
二、行替换1. 替换单词要替换文件中的某个单词,可以使用sed命令的“s”选项。
例如,将文件中的"old_word"替换为"new_word",可以使用以下命令:```shellsed 's/old_word/new_word/g' filename```这样会将文件filename中所有的"old_word"替换为"new_word"。
2. 替换行中的内容除了替换单个单词,sed命令还可以替换一整行的内容。
例如,将文件中包含"old_word"的行替换为"new_content",可以使用以下命令:```shellsed '/old_word/c new_content' filename```这样会将文件filename中所有含有"old_word"的行替换为"new_content"。
三、应用示例以下是一些使用sed命令进行行删除和替换的示例:1. 示例一:```This is line 1This is line 2This is line 3This is line 4This is line 5```要删除第3行和第4行,可以使用以下命令:```shellsed '3,4d' filename```执行结果为:```This is line 1This is line 2This is line 5```2. 示例二:```Hello, world!This is a test.Hello, sed!Goodbye, sed!```要将文件中所有的"sed"替换为"awk",可以使用以下命令:```shellsed 's/sed/awk/g' filename```执行结果为:```Hello, world!This is a test.Hello, awk!Goodbye, awk!```总结:本文介绍了sed命令的行删除和替换功能。
SED单板E300网管配置指导手册
下文中将根据不同的场景,介绍这6种业务模型。
通过这几个场景,可以更好的理解这6种模型的原理及配置方法。
4.2 业务配置大体步骤6种业务模型的创建,基本可以参考如下几个步骤:一、配置以太网专线(EP )业务:1 以太网接入适配管理,用户端口启用等属性设置2 创建UNI 、NNI 端口3 创建MFDFr 业务,配置业务属性4 配置MEF 数据板端口带宽属性5 VCG 容量配置6 配置时隙交叉二、配置以太网虚拟专线(EVP )业务:1 以太网接入适配管理,用户端口启用等属性设置2 创建UNI 、NNI 端口3 CE-VLAN ID 列表属性配置4 创建MFDFr 业务,配置业务属性5 配置MEF 数据板端口带宽属性6 VCG 容量配置7 配置时隙交叉4.3 业务配置方法在下面的场景中,使用的MSTP 设备为S330和S200,其中S200配置TFE 单板仅做业务透传,在网络中视为透明,文中不作相关配置说明。
其中:U1表示1#用户口(即FE 100Mbps 接口);S1表示1#系统口,其它端口标示类推。
用于配置新单板的E300网管版本建议使用3.19 R2P01及后续转产版本。
4.3.1 EPL(以太网专线业务)(点对点透传)以太网专线(EPL )具有两个业务接入点,对用户以太网MAC 帧进行点到点的透明传送。
每个EPL 用户的业务由专用的SDH 通道承载,不同用户不需要共享SDH 带宽,因此具有与SDH 完全相同的带宽保障和安全性能。
由于是点到点传送,因此不需要L2交换功能和MAC 地址学习。
EPL 业务特点:独占端口传输。
无论进入单板的以太网业务是否带VLAN ,是否是两层VLAN ,只要进入的端口是该条业务独占的,单板对业务均不做任何处理,直接从另一端口转发出去,等同于老数据单板的透传模式,传输效率高。
但由于端口独占,因此端口资源利用率低。
【应用场景】:A 、网络描述:A 端端业务流 A 、B 两地通过MSTP 网络点对点开通数据业务,整个业务通路带宽独享。
sed () 用法
sed是一种非交互式的文本编辑器,可以用来对文本文件进行各种操作。
sed命令通常用于在文本中查找、替换、删除或插入文本。
以下是一些常见的sed用法:
1. 替换文本:使用sed命令可以轻松地对文本进行替换。
例如,要将一个文件中所有的"cat"字符串替换为"dog",可以使用如下命令:
```
sed 's/cat/dog/g' filename.txt
```
这个命令将会在filename.txt的每一行中,将所有的"cat"替换为"dog"。
2. 删除行:使用sed命令可以删除指定的行。
例如,要删除一个文件中的第5行,可以使用如下命令:
```
sed '5d' filename.txt
```
这个命令将会删除filename.txt中的第5行。
3. 插入文本:使用sed命令可以在指定位置插入文本。
例如,要在一个文件的第10行后插入一行文本,可以使用如下命令:
```
sed '10a\This is a new line of text' filename.txt
```
这个命令将会在filename.txt的第10行后面插入一行文本"This is a new line of text"。
以上是一些sed命令的示例,但是实际使用中可能还有更多的用法和选项。
如果需要更详细的信息,可以使用man sed命令来查看sed的手册页。
Linux-sed命令详解
Linux-sed命令详解Linux sed命令详解sed是⼀种流编辑器,它是⽂本处理中⾮常好的⼯具,能够完美的配合正则表达式使⽤,功能不同凡响。
处理时,把当前处理的⾏存储在临时缓冲区中,称为“模式空间”(pattern space),接着⽤sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。
接着处理下⼀⾏,这样不断重复,直到⽂件末尾。
⽂件内容并没有改变,除⾮你使⽤重定向存储输出。
Sed主要⽤来⾃动编辑⼀个或多个⽂件,可以将数据⾏进⾏替换、删除、新增、选取等特定⼯作,简化对⽂件的反复操作,编写转换程序等。
sed的选项、命令、替换标记命令格式sed的命令格式:sed [options] 'command' file(s);sed的脚本格式:sed [options] -f scriptfile file(s);选项-e :直接在命令⾏模式上进⾏sed动作编辑,此为默认选项;-f :将sed的动作写在⼀个⽂件内,⽤–f filename 执⾏filename内的sed动作;-i :直接修改⽂件内容;-n :只打印模式匹配的⾏;-r :⽀持扩展表达式;-h或--help:显⽰帮助;-V或--version:显⽰版本信息。
参数⽂件:指定待处理的⽂本⽂件列表。
sed常⽤命令命令说明a\在当前⾏下⾯插⼊⽂本;i\在当前⾏上⾯插⼊⽂本;c\把选定的⾏改为新的⽂本;d删除,删除选择的⾏;D删除模板块的第⼀⾏;s替换指定字符;h拷贝模板块的内容到内存中的缓冲区;H追加模板块的内容到内存中的缓冲区;g获得内存缓冲区的内容,并替代当前模板块中的⽂本;G获得内存缓冲区的内容,并追加到当前模板块⽂本的后⾯;l列表不能打印字符的清单;n读取下⼀个输⼊⾏,⽤下⼀个命令处理新的⾏⽽不是⽤第⼀个命令;N追加下⼀个输⼊⾏到模板块后⾯并在⼆者间嵌⼊⼀个新⾏,改变当前⾏号码;p打印模板块的⾏。
P(⼤写) 打印模板块的第⼀⾏;q退出Sed;b lable 分⽀到脚本中带有标记的地⽅,如果分⽀不存在则分⽀到脚本的末尾;r file 从file中读⾏;t label if分⽀,从最后⼀⾏开始,条件⼀旦满⾜或者T,t命令,将导致分⽀到带有标号的命令处,或者到脚本的末尾;T label 错误分⽀,从最后⼀⾏开始,⼀旦发⽣错误或者T,t命令,将导致分⽀到带有标号的命令处,或者到脚本的末尾;w file 写并追加模板块到file末尾;W file 写并追加模板块的第⼀⾏到file末尾;!表⽰后⾯的命令对所有没有被选定的⾏发⽣作⽤;=打印当前⾏号;#把注释扩展到下⼀个换⾏符以前;sed替换标记命令说明g表⽰⾏内全⾯替换;p表⽰打印⾏;w表⽰把⾏写⼊⼀个⽂件;w表⽰把⾏写⼊⼀个⽂件;x表⽰互换模板块中的⽂本和缓冲区中的⽂本;y表⽰把⼀个字符翻译为另外的字符(但是不⽤于正则表达式);\1⼦串匹配标记;&已匹配字符串标记;sed元字符集字符集说明^匹配⾏开始,如:/^sed/匹配所有以sed开头的⾏;$匹配⾏结束,如:/sed$/匹配所有以sed结尾的⾏;.匹配⼀个⾮换⾏符的任意字符,如:/s.d/匹配s后接⼀个任意字符,最后是d;*匹配0个或多个字符,如:/*sed/匹配所有模板是⼀个或多个空格后紧跟sed的⾏;[]匹配⼀个指定范围内的字符,如/[ss]ed/匹配sed和Sed;[^]匹配⼀个不在指定范围内的字符,如:/[^A-RT-Z]ed/匹配不包含A-R和T-Z的⼀个字母开头,紧跟ed的⾏; \(..\)匹配⼦串,保存匹配的字符,如s/\(love\)able/\1rs,loveable被替换成lovers;&保存搜索字符⽤来替换其他字符,如s/love/**&**/,love这成**love**;\<匹配单词的开始,如:/\\>匹配单词的结束,如/love\>/匹配包含以love结尾的单词的⾏;x\{m\}重复字符x,m次,如:/0\{5\}/匹配包含5个0的⾏;x\{m,\}重复字符x,⾄少m次,如:/0\{5,\}/匹配⾄少有5个0的⾏;x\{m,n\}重复字符x,⾄少m次,不多于n次,如:/0\{5,10\}/匹配5~10个0的⾏;sed实例替换操作:S命令替换⽂本中的字符串sed 's/book/books/' file-n选项和p命令⼀起使⽤表⽰只打印那些发⽣替换的⾏sed -n 's/test/TEST/p' file直接编辑⽂件选项-i,会匹配file⽂件中每⼀⾏的第⼀个book替换为bookssed -i 's/book/books/g' file全⾯替换标记g使⽤后缀 /g 标记会替换每⼀⾏中的所有匹配sed 's/book/books/g' file当需要从第N处匹配开始替换时,可以使⽤ /Ngecho sksksksksksk | sed 's/sk/SK/2g'skSKSKSKSKSKecho sksksksksksk | sed 's/sk/SK/3g'skskSKSKSKSKecho sksksksksksk | sed 's/sk/SK/4g'skskskSKSKSK定界符以上命令中字符 / 在sed中作为定界符使⽤,也可以使⽤任意的定界符sed 's:test:TEXT:g'sed 's|test|TEXT|g'sed 's#test#TEXT#g'定界符出现在样式内部时,需要进⾏转义sed 's/\/bin/\/usr\/local\/bin/g'删除操作:d命令删除空⽩⾏sed '/^$/d' file删除⽂件的第2⾏sed '2d' file删除⽂件的第2⾏到末尾所有⾏sed '2,$d' file删除⽂件最后⼀⾏sed '$d' file删除⽂件中所有开头是test的⾏sed '/^test/'d file已匹配字符串标记&正则表达式 \w\+ 匹配每⼀个单词,使⽤ [&] 替换它,& 对应于之前所匹配到的单词echo this is a test line | sed 's/\w\+/[&]/g'[this] [is] [a] [test] [line]所有以192.168.0.1开头的⾏都会被替换成它⾃已加localhostsed 's/^192.168.0.1/&localhost/' file 192.168.0.1localhost⼦串匹配标记\1匹配给定样式的其中⼀部分echo this is digit 7 in a number | sed 's/digit \([0-9]\)/\1/'this is 7 in a number命令中 digit 7,被替换成了 7。
很全的sed&awk 正则表达式手册
Sed (2)sed常用选择项 (2)语法正则表达式 (3)替换 (6)删除 (7)追加插入更改 (7)列表 (7)转换 (7)打印 (7)打印行号 (8)下一步 (8)读和写文件 (8)退出 (8)高级命令 (8)awk (14)分隔符 (14)表达式字符链接 (14)系统内置变量 (16)格式化输出 (17)使用shell 变量 (18)流控制 (18)数组 (20)测试数组成员 (21)函数 (22)高级讲解 (24)域 (24)变量 (26)特殊模式begin end (27)命令参数 (28)Sed 命令sed常用选择项sed/awk +[参数选项]+ “语法“+ 文件名-n 关闭输出到标准输出-e 执行多条sed命令;(或者用“;”间隔多条指令)-f 从命令脚本读如命令Sed –f sed_srcript_file input_filesed/awk的特点均是读入文件的一行做为输入,应用于所有的命令,再读入下一行执行操作:1 从输入文件中读入一行2 为改行做一个拷贝3 在该行上执行“语法”动作4 为下一行执行第一步动作语法正则表达式/pattern/actionPattern 正则表达式Action 执行动作执行过程:1 顺序收索每个模式pattern 直到发现一个匹配2 发现匹配后执行action 动作3 执行完成后,到达下一个action ,执行第一步4 当所有模式试过一遍后,读取下一行。
在第四步前,sed显示被改动的记录,awk必须手动显示改动的内容,Sed可以使用的动作包括编辑单个字母的命令,awk动作通常是一个编程语句集合。
Pattern 包括普通字符和通配符。
. 点号* 星号在此处意思是匹配前面字符出现0次以上[chars] 匹配chars中的任何一个字符,chars是一个字符序列。
可用“-”字符指出字符范围,“^”是chars中的第一个字符,则匹配未在chars中指定的字符^ 匹配一行的开始$ 匹配一行的末\ 转义符号[…] 匹配括弧里面的任意字符,第一字符如果是^表示不包含所列示字符,如果里面包含‟[ ]‟符号时候,表示同时包含‟[]‟,如果是任选之一应写成‟][‟\{n, m\} 匹配前面的匹配n-m次;\{n\}匹配前面的模式n次Egrep 和awk 可以使用的特殊字符…\<‟…\>‟+ 匹配前面的正则表达式1次以上? 匹配前面的正则表达式0次以上| 匹配前面或者后的表达式( ) 对正则表达式分组,设置匹配集合Sed是先对第一个行应用所有编辑命令,在对第二个行。
