Sed_命令详解
Sed 命令详解1.sed -n '2'p filename打印文件的第二行。
2.sed -n '1,3'p filename打印文件的1到3行3. sed -n '/Neave/'p filename打印匹配Neave的行(模糊匹配)4. sed -n '4,/The/'p filename在第4行查询模式The5. sed -n '1,$'p filename打印整个文件,$表示最后一行。
6. sed -n '/.*ing/'p filename匹配任意字母,并以ing结尾的单词(点号不能少)7 sed -n / -e '/music/'= filename打印匹配行的行号,-e 会打印文件的内容,同时在匹配行的前面标志行号。
-n只打印出实际的行号。
8.sed -n -e '/music/'p -e '/music/'= filename打印匹配的行和行号,行号在内容的下面9.sed '/company/' a\ "Then suddenly it happend" filename选择含有company的行,将后面的内容"Then suddenly it happend"加入下一行。
注意:它并不改变文件,所有操作在缓冲区,如果要保存输出,重定向到一个文件。
10. sed '/company/' i\ "Then suddenly it happend" filename同9,只是在匹配的行前插入11.sed '/company/' c\ "Then suddenly it happend" filename用"Then suddenly it happend"替换匹配company的行的内容。
12.sed '1'd ( '1,3'd '$'d '/Neave/'d) filename删除第一行(1到3行,最后一行,匹配Neave的行)13.[ address [,address]] s/ pattern-to-find /replacement-pattern/[g p w n]s选项通知s e d这是一个替换操作,并查询pattern-to-find,成功后用replacement-pattern替换它。
替换选项如下:g 缺省情况下只替换第一次出现模式,使用g选项替换全局所有出现模式。
p 缺省s e d将所有被替换行写入标准输出,加p选项将使- n选项无效。
- n选项不打印输出结果。
w 文件名使用此选项将输出定向到一个文件。
(注意只将匹配替换的行写入文件,而不是整个内容) 14.sed s'/nurse/"hello "&/' filename将'hello '增加到'nurse'的前面。
15. sed '/company/r append.txt' filename在匹配company的行的下一行开始加入文件append.txt的内容。
16. sed '/company/'q filename首次匹配company后就退出sed程序只所以看sed命令,是因为我遇到了这个一个问题。
网上有很多教程,他们发表了很多程序代码,但是作者为了解释方便,都对程序作了行号编码,就像下面这样:代码::1:#!/bin/bash2:#rename file extesions3:#4:# rfe old_extensions new_extension假设这个文件名是tmp,那么我们可以使用下面的命令来去掉这个行号和冒号(:)代码::sed -e s'/^[0-9]\{1,\}://g' tmp不过上面的命令的命令有一个缺点,那就是如果这个行号不是数字开头,而是有空格的话,那就需要修改匹配规则,规则应该修改为匹配第一个非空白字符是数字开始,后面接一个冒号的配对。
命令如下:代码::sed -e s'/^[^0-9a-zA-Z]*[0-9]\{1,\}://g' tmp这令我很兴奋,于是想看看sed到底有多厉害,看了以后,明白的是不是sed有多厉害,就像awk一样,他们只是把正规表达式用到了极致。
以 Redhat6.0 为测试环境事实上在solaris下的sed命令要比linux强,但因为没有测试环境,我这里只给在linux下经过测试的用法。
★命令行参数简介★首先假设我们有这样一个文本文件 sedtest.txt★输出指定范围的行 p★在每一行前面增加一个制表符(^I)★在每一行后面增加--end★显示指定模式匹配行的行号 [/pattern/]=★在匹配行后面增加文本 [/pattern/]a\ 或者 [address]a\★删除匹配行 [/pattern/]d 或者 [address1][,address2]d★替换匹配行 [/pattern/]c\ 或者 [address1][,address2]c\★在匹配行前面插入文本 [/pattern/]i\ 或者 [address]i\★替换匹配串(注意不再是匹配行) [addr1][,addr2]s/old/new/g★限定范围后的模式匹配★指定替换每一行中匹配的第几次出现★ &代表最后匹配★利用sed修改PATH环境变量★测试并提高sed命令运行效率★指定输出文件 [address1][,address2]w outputfile★指定输入文件 [address]r inputfile★替换相应字符 [address1][,address2]y/old/new/★ !号的使用★ \c正则表达式c 的使用★ sed命令中正则表达式的复杂性★转换man手册成普通文本格式(新)★ sed的man手册(用的就是上面的方法)★命令行参数简介sed-e script指定sed编辑命令-f script file 指定的文件中是sed编辑命令-n 寂静模式,抑制来自sed命令执行过程中的冗余输出信息,比如只显示那些被改变的行。
不明白?不要紧,把这些肮脏丢到一边,跟我往下走,不过下面的介绍里不包括正则表达式的解释,如果你不明白,可能有点麻烦。
★首先假设我们有这样一个文本文件 sedtest.txtcat > sedtest.txtSed is a stream editor----------------------A stream editor is used to perform basic text transformations on an input stream --------------------------------------------------------------------------------While in some ways similar to an editor which permits script ed edits (such as ed ),----------------------------------------------------------------------------------sed works by making only one pass over the input(s), and is consequently more ----------------------------------------------------------------------------- efficient. But it is sed's ability to filter text in a pipeline which particularly---------------------------------------------------------------------------------★输出指定范围的行 p other types of editors.sed -e "1,4p" -n sedtest.txtsed -e "/from/p" -n sedtest.txtsed -e "1,/from/p" -n sedtest.txt★在每一行前面增加一个制表符(^I)sed "s/^/^I/g" sedtest.txt注意^I的输入方法是ctrl-v ctrl-i单个^表示行首★在每一行后面增加--endsed "s/$/--end/g" sedtest.txt单个$表示行尾★显示指定模式匹配行的行号 [/pattern/]=sed -e '/is/=' sedtest.txt1Sed is a stream editor----------------------3A stream editor is used to perform basic text transformations on an input stream --------------------------------------------------------------------------------While in some ways similar to an editor which permits script ed edits (such as ed ),----------------------------------------------------------------------------------7sed works by making only one pass over the input(s), and is consequently more -----------------------------------------------------------------------------9efficient. But it is sed's ability to filter text in a pipeline which particularly----------------------------------------------------------------------------------意思是分析sedtest.txt,显示那些包含is串的匹配行的行号,注意 11行中出现了is字符串这个输出是面向stdout的,如果不做重定向处理,则不影响原来的sedtest.txt★在匹配行后面增加文本 [/pattern/]a\ 或者 [address]a\^Dsed -f sedadd.script sedtest.txtSed is a stream editorA stream editor is used to perform basic text transformations on an input stream While in some ways similar to an editor which permits script ed edits (such as ed ),----------------------------------------------------------------------------------sed works by making only one pass over the input(s), and is consequently more -----------------------------------------------------------------------------efficient. But it is sed's ability to filter text in a pipeline which particularly----------------------------------------------------------------------------------[scz@ /home/scz/src]> sed -e "a\\+++++++++---------------------------------------------找到包含from字符串的行,在该行的下一行增加+++++++++。
sed基本用法
`sed` 是一个流编辑器,它用于在文本流中进行基本的文本转换。
它以行为单位处理文本,可以执行插入、删除、查找和替换等操作。
以下是`sed` 的基本用法:1. 插入文本(Insertion):使用`i\` 命令可以在指定行之前插入文本。
例如,要在第5行之前插入一行文本,可以使用以下命令:```arduinosed -i '5i\This is the new line of text.' filename.txt```2. 删除文本(Deletion):使用`d` 命令可以删除指定行。
例如,要删除第10行,可以使用以下命令:```arduinosed -i '10d' filename.txt```3. 查找和替换文本(Substitution):使用`s` 命令可以查找并替换指定文本。
例如,要将所有出现的"apple" 替换为"orange",可以使用以下命令:```arduinosed -i 's/apple/orange/g' filename.txt```其中,`g` 表示全局替换,即替换每一行中的所有匹配项。
如果不加`g` 参数,只会替换每行中的第一个匹配项。
4. 打印文本(Print):使用`p` 命令可以打印指定行。
例如,要打印第10行到第20行,可以使用以下命令:```arduinosed -n '10,20p' filename.txt```使用`-n` 参数可以禁止默认打印所有行,只打印指定的行。
5. 控制输出(Control):使用`q` 命令可以退出`sed` 并打印指定行,然后退出。
例如,要打印第10行然后退出,可以使用以下命令:```arduinosed -n '10q' filename.txt```6. 正则表达式(Regular Expression):`sed` 支持使用正则表达式进行更复杂的文本处理。
Linux命令进阶使用sed进行正则表达式匹配与替换
Linux命令进阶使用sed进行正则表达式匹配与替换sed(Stream Editor)是Unix/Linux系统中一种常用的命令行文本编辑工具,它可以在对数据进行流式处理时,根据用户指定的规则进行字符串匹配与替换。
sed支持正则表达式,使得在处理文本时,更加灵活高效。
本文将介绍如何使用sed进行正则表达式匹配与替换,以及一些常见的用法和实例。
一、sed命令概述sed命令是Linux系统中的一个强大的文本处理工具,常用于从文件或者标准输入流中读取数据,并按照指定的规则进行处理。
它的基本语法为:```sed [options] 'command' file(s)```其中,options是可选的参数,command是sed的操作命令,file(s)表示要处理的文件。
sed命令可以直接在命令行中使用,也可以将命令写入一个脚本文件中进行批量处理。
二、sed命令选项sed命令有许多选项,下面介绍一些常用的选项:1. -n:只打印经过sed命令处理后的结果,不输出其他内容。
2. -i:直接修改原文件,而不是打印结果到标准输出。
3. -e:指定多个命令,用分号分隔。
4. -r:启用扩展正则表达式。
5. -f file:从指定的文件中读取sed命令。
三、sed基本操作命令1. p:打印匹配行。
2. d:删除匹配行。
3. s/pattern/replacement/g:替换匹配的文本。
4. i:在指定行之前插入文本。
5. a:在指定行之后追加文本。
四、使用sed进行正则表达式匹配与替换sed命令的最常见用法是进行字符串匹配与替换。
下面介绍一些常用的正则表达式匹配与替换操作:1. 使用sed进行简单的字符串替换假设我们有一个文件file.txt,内容如下:```Hello, World!```我们可以通过下面的命令使用sed进行简单的字符串替换:```sed 's/Hello/Hi/' file.txt```执行上述命令后,输出的结果如下:```Hi, World!```这条命令中,s表示替换操作,/Hello/表示要被替换的字符串,/Hi/表示替换后的字符串。
Linux中的sed命令的详细解释
Linux中的sed命令的详细解释linxu下的sed命令是一个很好的文件处理工具。
下面由店铺为大家整理了linux的sed命令的详细解释的相关知识,希望对大家有帮助!一、Linux中的sed命令的详细解释sed是一个很好的文件处理工具,本身是一个管道命令,主要是以行为单位进行处理,可以将数据行进行替换、删除、新增、选取等特定工作,下面先了解一下sed的用法sed命令行格式为:sed [-nefri] ‘command’ 输入文本常用选项:-n∶使用安静(silent)模式。
在一般sed 的用法中,所有来自STDIN的资料一般都会被列出到萤幕上。
但如果加上 -n 参数后,则只有经过sed 特殊处理的那一行(或者动作)才会被列出来。
-e∶直接在指令列模式上进行 sed 的动作编辑;-f∶直接将 sed 的动作写在一个档案内, -f filename 则可以执行filename 内的sed 动作;-r∶sed 的动作支援的是延伸型正规表示法的语法。
(预设是基础正规表示法语法)-i∶直接修改读取的档案内容,而不是由萤幕输出。
常用命令:a ∶新增,a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~c ∶取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行!d ∶删除,因为是删除啊,所以 d 后面通常不接任何咚咚;i ∶插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);p ∶列印,亦即将某个选择的资料印出。
通常 p 会与参数 sed -n 一起运作~s ∶取代,可以直接进行取代的工作哩!通常这个s 的动作可以搭配正规表示法!例如 1,20s/old/new/g 就是啦!二、Linux中的sed命令详解实例在testfile文件的第四行后添加一行,并将结果输出到标准输出,在命令行提示符下输入如下命令:sed -e 4a\newLine testfile首先查看testfile中的内容如下:$ cat testfile #查看testfile 中的内容HELLO LINUX!Linux is a free unix-type opterating system.This is a linux testfile!Linux test使用sed命令后,输出结果如下:$ sed -e 4a\newline testfile #使用sed 在第四行后添加新字符串HELLO LINUX! #testfile文件原有的内容Linux is a free unix-type opterating system.This is a linux testfile!Linux testnewline以行为单位的新增/删除将 /etc/passwd 的内容列出并且列印行号,同时,请将第 2~5 行删除![root@www ~]# nl /etc/passwd | sed '2,5d'1 root:x:0:0:root:/root:/bin/bash6 sync:x:5:0:sync:/sbin:/bin/sync7 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown.....(后面省略).....sed 的动作为 '2,5d' ,那个 d 就是删除!因为 2-5 行给他删除了,所以显示的数据就没有 2-5 行罗~另外,注意一下,原本应该是要下达 sed -e 才对,没有 -e 也行啦!同时也要注意的是, sed 后面接的动作,请务必以 '' 两个单引号括住喔!只要删除第 2 行nl /etc/passwd | sed '2d'要删除第 3 到最后一行nl /etc/passwd | sed '3,$d'在第二行后(亦即是加在第三行)加上『drink tea?』字样![root@www ~]# nl /etc/passwd | sed '2a drink tea'1 root:x:0:0:root:/root:/bin/bash2 bin:x:1:1:bin:/bin:/sbin/nologindrink tea3 daemon:x:2:2:daemon:/sbin:/sbin/nologin.....(后面省略).....那如果是要在第二行前nl /etc/passwd | sed '2i drink tea'如果是要增加两行以上,在第二行后面加入两行字,例如『Drink tea or .....』与『drink beer?』[root@www ~]# nl /etc/passwd | sed '2a Drink tea or ......\> drink beer ?'1 root:x:0:0:root:/root:/bin/bash2 bin:x:1:1:bin:/bin:/sbin/nologinDrink tea or ......drink beer ?3 daemon:x:2:2:daemon:/sbin:/sbin/nologin.....(后面省略).....每一行之间都必须要以反斜杠『\ 』来进行新行的添加喔!所以,上面的例子中,我们可以发现在第一行的最后面就有 \ 存在。
Sed-命令详解
Sed 命令详解1.sed -n '2'p打印文件的第二行。
2.sed -n '1,3'p打印文件的1到3行3. sed -n '/Neave/'p打印匹配Neave的行(模糊匹配)4. sed -n '4,/The/'p在第4行查询模式The5. sed -n '1,$'p打印整个文件,$表示最后一行。
6. sed -n '/.*ing/'p匹配任意字母,并以ing结尾的单词(点号不能少)7 sed -n / -e '/music/'=打印匹配行的行号,-e 会打印文件的内容,同时在匹配行的前面标志行号。
-n只打印出实际的行号。
8.sed -n -e '/music/'p -e '/music/'=打印匹配的行和行号,行号在内容的下面9.sed '/company/' a\ "Then suddenly it happend"选择含有company的行,将后面的内容"Then suddenly it happend"加入下一行。
注意:它并不改变文件,所有操作在缓冲区,如果要保存输出,重定向到一个文件。
10. sed '/company/' i\ "Then suddenly it happend"同9,只是在匹配的行前插入11.sed '/company/' c\ "Then suddenly it happend"用"Then suddenly it happend"替换匹配company的行的内容。
12.sed '1'd ( '1,3'd '$'d '/Neave/'d)删除第一行(1到3行,最后一行,匹配Neave的行)13.[ address [,address]] s/ pattern-to-find /replacement-pattern/[g p w n]s选项通知s e d这是一个替换操作,并查询pattern-to-find,成功后用replacement-pattern替换它。
使用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 () 用法
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的手册页。
sed命令用法
sed命令用法sed,即Stream EDitor的缩写,是一种流编辑器,它能够使用户对文本流进行处理,它是Linux系统中最常被使用的数据处理工具,能够快速且高效完成文本处理工作。
1、sed命令简介sed是一种流编辑器,由Unix系统提供,它能够在脚本文件中调用,以完成一些文本处理任务。
它支持一些正则表达式,也可以使用字符串或数字作为参数,用于查找和替换字符串。
它可以在文本文件、标准输入流、一个或多个文件中进行编辑和处理,它的好处在于速度快,可以使用通配符规范文本文件,使用一次可以改变多行文本,并且可以控制环境。
2、sed命令用法(1)sed命令基本形式sed [选项] 'command' filename(2)sed命令参数-i.bak:备份当前被编辑文件,以"filename.bak"格式作为存档文件;-n:使用安静模式,即不自动打印输出;-e:后接 sed 命令行,用于执行多条命令;-f:执行 sed 编辑脚本,使得程序分离命令和数据;-r:使用扩展的正则表达式;-u:表示单字节字符集。
(3)sed 命令常见功能a:在文件末尾或某一行后面添加文本;c:用新文本替换一行或多行;d:删除一行或多行;i:在文件开头或某一行前面添加文本;p:打印行;s:使用正则表达式匹配已存在的文本内容,并替换成指定文本;r:从外部文件读入文本,替换当前行;n:读取下一行文本;q:退出 sed 命令。
3、使用实例(1)打印文件的第一、三、五行sed -n '1p;3p;5p' filename.txt(2)从每一行的开头添加字符串:sed 's/^/mystring/' filename.txt(3)替换文件中的字符串sed 's/string1/string2/g' filename.txt。
sed常用参数
sed常用参数
sed是一种强大的文本处理工具,常用于对文本进行搜索、替换、删除等操作。
下面是一些sed常用参数及其功能的介绍。
1. -e或--expression:用于指定sed的编辑指令。
可以使用多个-e参数来指定多个编辑指令。
2. -f或--file:用于指定sed的编辑脚本文件。
3. -n或--quiet或--silent:只输出经过编辑的行,不输出未经编辑的行。
4. -i或--in-place:直接修改文件内容,而不是将结果输出到标准输出。
5. -r或--regexp-extended:使用扩展正则表达式进行匹配。
6. -s或--separate:将输入文件视为多个独立的数据流进行处理。
7. -u或--unbuffered:即时输出,不缓冲。
8. -z或--null-data:将输入文件视为以null字符分隔的数据流进行处理。
9. -y或--squelch或--silent:禁止自动打印模式空间的内容。
10. -l或--line-length:指定行的最大长度。
11. -b或--binary:以二进制模式打开文件。
通过灵活使用这些参数,我们可以利用sed来处理各种文本文件。
例如,我们可以使用-e参数来指定多个编辑指令,对文件中的特定字符串进行替换;使用-n参数来只输出经过编辑的行,忽略其他行;
使用-i参数直接修改文件内容,而不是输出到标准输出等。
sed是一款非常实用的文本处理工具,通过灵活运用其常用参数,我们可以方便地对文本进行各种操作,提高工作效率。
linux之sed命令详解
linux之sed命令详解sed是⼀个⾮交互式⽂本编辑器,它可以对⽂本⽂件和标准输⼊进⾏编辑,标准输⼊可以来⾃键盘输⼊,⽂件重定向,字符串,变量,或者是管道的⽂本。
并将其复制到缓冲区,然后读取命令⾏的命令,对此命令要求的⾏号进⾏编辑。
⽤法:sed共有三种⽤法:①直接在命令⾏中使⽤ sed [选项] 'sed命令' 输⼊⽂件②将sed命令写⼊脚本⽂件中,使⽤sed命令调⽤ sed [选项] -f sed脚本⽂件输⼊⽂件③将sed命令写⼊脚本⽂件中,并设置为可执⾏ ./sed 脚本⽂件输⼊⽂件其中第③种的脚本⽂件中需要使⽤#!符号开头。
sed常⽤的选项-n:不打印所有的⾏到标准输出,只输出那些被命令影响到的⾏-e:表⽰将下⼀个字符串解析为sed编辑命令,如果只有⼀个编辑命令,则-e可以省略-f:表⽰正在调⽤sed脚本⽂件-r:表⽰⽀持延伸型的正则表⽰法(默认只⽀持基础正则表⽰法)-i:直接修改读取的⽂件内容,⽽不是通过屏幕输出。
sed命令sed命令通常由两部分组成。
⽂本定位和sed编辑命令。
⽂本定位对⽂本的部分⾏进⾏抽取,编辑命令对抽取的⾏进⾏编辑。
sed定位⽅式sed提供了两种定位⽅式:①通过⾏号,指定⼀⾏或者⾏号范围②使⽤正则表达式定位⽅式:x:x为指定⾏号x,y:指定从x到y的⾏号范围/pattern/:查询包含模式的⾏/pattern/pattern/:查询包含两个模式的⾏x,/pattern/:从x⾏到patter模式匹配的⾏之间x,y!:查询不包括x和y⾏号的⾏sed编辑命令p:打印匹配⾏=:打印⽂件⾏号a:在定位⾏号之后追加⽂本信息i:在定位⾏号之前插⼊⽂本信息d:删除定位⾏c:使⽤新⽂本替换⽂本⾏s:使⽤替换模式替换相应模式r:从另⼀个⽂件中读取⽂本w:将⽂本写⼊到⼀个⽂件y:变换字符q:第⼀个模式匹配后退出{}:在定位⾏执⾏命令组n:读取下⼀个输⼊⾏,⽤下⼀个命令处理新的⾏说了这么多,我们就先来体验⼀下:[fuwh@localhost 15:11 ~/stu]$ nl test1 first line2 second line3 l i n e4 what is this[fuwh@localhost 15:11 ~/stu]$ sed '2d' testfirst linel i n ewhat is this这就是sed的⼀个基本使⽤⽅式。
sed命令详解
sed命令详解调⽤sed命令有两种形式:sed [options] 'command'file(s)sed [options] -f scriptfile file(s)删除:d命令sed's/要被替换的字符串/新的字符串/g'例:sed'2d' example 删除example⽂件的第⼆⾏。
sed'2,$d' example 删除example⽂件的第⼆⾏到末尾所有⾏。
sed'$d' example 删除example⽂件的最后⼀⾏。
sed'/test/d' example 删除example⽂件所有包含test的⾏。
替换:s命令sed's/原字符串/替换字符串/'可把分割符“/”进⾏替换,如:# 将分隔符换成问号”?”:sed's?原字符串?替换字符串?'末尾的“g”代表替换全部,否则只替换每⾏的第⼀个:# 替换所有匹配关键字sed's/原字符串/替换字符串/g'“-i”参数:直接修改并保存sed -i 's/原字符串/替换字符串/g' filename对⽂件做备份:sed -i '.bak''s/原字符串/替换字符串/g' filename⼀些特殊字符的使⽤: ”^”表⽰⾏⾸ ”$”符号如果在引号中表⽰⾏尾,但是在引号外却表⽰末⾏(最后⼀⾏)# 注:如果没有 “&”,就会全⽂替换sed's/^/添加的头部&/g' #在所有⾏⾸添加sed's/$/&添加的尾部/g' #在所有⾏末添加sed'2s/原字符串/替换字符串/g' #替换第2⾏sed'$s/原字符串/替换字符串/g' #替换最后⼀⾏sed'2,5s/原字符串/替换字符串/g' #替换2到5⾏sed'2,$s/原字符串/替换字符串/g' #替换2到最后⼀⾏批量替换字符串sed -i "s/查找字段/替换字段/g" `grep查找字段 -rl 路径`sed -i "s/oldstring/newstring/g" `grep oldstring -rl yourdir多个替换可以在同⼀条命令中执⾏,⽤分号”;”分隔,其格式为:# 同时执⾏两个替换规则sed's/^/添加的头部&/g;s/$/&添加的尾部/g'# nl /etc/passwd | sed '2,5d' 删除2~5⾏# nl /etc/passwd | sed '3,$d' 删除3~最后⼀⾏ $代表最后⼀⾏# nl /etc/passwd | sed '2a drink tea?' 在第⼆⾏之后加⼊“drink tea?”# nl /etc/passwd | sed '2i drink tea?' 在第⼆⾏之前加⼊”drink tea?“# nl /etc/passwd | sed '2a drink tea?\ 在第⼆⾏之后加⼊“drink tea?”并以“\”结束,回车后> drink beer ?\ 在“drink tea?”后加⼊⼀⾏以“ \ ”结束> shirt!'# nl /etc/passwd | sed '2,5c NO 2-5 NUMBER' 将第2~5⾏的内容替换为“NO 2-5 NUMBER”$ sed -n 's/^test/mytest/p' example-----(-n)选项和p标志⼀起使⽤表⽰只打印那些发⽣替换的⾏。
