linux sed命令参数及用法详解

合集下载

Linux命令高级技巧使用sed进行模式匹配和替换

Linux命令高级技巧使用sed进行模式匹配和替换

Linux命令高级技巧使用sed进行模式匹配和替换Linux命令高级技巧:使用sed进行模式匹配和替换sed(stream editor)是Linux操作系统中一款十分强大的流式编辑器。

它可以实现对文本进行各种操作,包括模式匹配和替换。

本文将介绍sed命令的使用方法,帮助读者学习如何利用sed进行高级的模式匹配和替换。

一、基本概述sed命令的基本用法是:sed 's/模式/替换内容/g' 文件名其中,s表示substitute(替换),/模式/表示要查找的内容模式,替换内容表示要替换为的内容,g表示全局替换。

二、模式匹配1. 正则表达式在sed命令中,可以使用正则表达式作为模式进行匹配。

例如,要匹配包含单词"apple"的行,可以使用以下命令:sed '/apple/p' 文件名其中,/apple/表示要匹配的模式,p表示打印匹配的行。

2. 匹配多个模式sed命令还支持同时匹配多个模式,并对匹配到的行进行不同的处理。

例如,要匹配包含单词"apple"和"banana"的行,并将其替换为"fruit",可以使用以下命令:sed '/apple/s/apple/banana/g' 文件名其中,/apple/表示第一个模式,s表示替换,apple表示要替换的内容,banana表示替换为的内容,g表示全局替换。

3. 匹配行号sed命令还支持根据行号进行模式匹配。

例如,要匹配第3行,并将其替换为"hello",可以使用以下命令:sed '3s/.*/hello/' 文件名其中,3s表示匹配第3行,.*表示匹配任意字符,hello表示替换为的内容。

三、模式匹配与替换1. 模式匹配后替换sed命令还可以通过模式匹配的结果来进行具体的替换操作。

例如,要将包含单词"apple"的行替换为"banana",可以使用以下命令:sed -n '/apple/{s/apple/banana/g;p}' 文件名其中,/apple/表示匹配的模式,s/apple/banana/g表示替换操作,p表示打印替换后的结果。

linux中sed的用法

linux中sed的用法

linux中sed的⽤法sed命令⾏格式为:sed [-nefri] ‘command’ 输⼊⽂本/⽂件常⽤选项:-n∶取消默认的输出,使⽤安静(silent)模式。

在⼀般 sed 的⽤法中,所有来⾃ STDIN的资料⼀般都会被列出到屏幕上。

但如果加上 -n 参数后,则只有经过sed 特殊处理的那⼀⾏(或者动作)才会被列出来-e∶进⾏多项编辑,即对输⼊⾏应⽤多条sed命令时使⽤. 直接在指令列模式上进⾏ sed 的动作编辑-f∶指定sed脚本的⽂件名. 直接将 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定址定址⽤于决定对哪些⾏进⾏编辑。

地址的形式可以是数字、正则表达式、或⼆者的结合。

如果没有指定地址,sed将处理输⼊⽂件的所有⾏。

地址是⼀个数字,则表⽰⾏号;是“$"符号,则表⽰最后⼀⾏。

例如:sed -n '3p' datafile只打印第三⾏只显⽰指定⾏范围的⽂件内容,例如:# 只查看⽂件的第100⾏到第200⾏sed -n '100,200p' mysql_slow_query.log地址是逗号分隔的,那么需要处理的地址是这两⾏之间的范围(包括这两⾏在内)。

如何使用sed命令在Linux中进行文本替换

如何使用sed命令在Linux中进行文本替换

如何使用sed命令在Linux中进行文本替换Sed命令是Linux中非常强大的文本处理工具,它可以用来进行文本替换、删除、插入等操作。

在本文中,将详细介绍如何使用sed命令进行文本替换。

一、什么是sed命令Sed(Stream Editor)是一种流式文本编辑器,可以对文本进行逐行处理。

它通过读取输入流中的文本,应用一系列的编辑命令,并将处理结果输出到标准输出。

Sed命令在Linux中被广泛应用于文本处理、大规模替换等操作。

二、Sed命令的基本用法1. 替换操作:sed 's/old/new/' filename这个命令将会在文件中替换掉所有的"old"字符串,并用"new"字符串进行替换。

2. 正则表达式:sed 's/pattern/replacement/' filename使用正则表达式来匹配需要替换的文本。

可以使用正则表达式的特殊符号来指定替换的范围和规则。

三、Sed命令的高级用法1. 全局替换:sed 's/old/new/g' filename在替换命令的末尾添加"g"选项可以实现全局替换。

否则,默认情况下,sed只替换每行中的第一个匹配。

2. 仅替换指定行:sed '2s/old/new/' filename通过指定行号,可以只对指定行进行替换操作。

这个命令将会替换文件中第2行的"old"字符串。

3. 替换指定范围:sed '2,5s/old/new/' filename通过指定范围,可以在给定范围内进行替换操作。

这个命令将会替换文件中第2行到第5行的所有"old"字符串。

4. 替换匹配模式所在行的下一行:sed '/pattern/{n;s/old/new/;}' filename这个命令将会在匹配模式所在行的下一行进行替换操作。

Linux命令进阶使用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/表示替换后的字符串。

sed 命令详解 很全的

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,而且替换的行会被打印出来。

linux命令sed用法

linux命令sed用法

linux命令sed用法Linux命令sed是一款常用的文本处理工具,可以用来实现文本替换、删除、插入等多种操作。

其用法有以下几个方面:1. 替换文本sed命令最常用的功能就是替换文本。

语法如下:sed 's/old/new/g' file.txt其中,s表示替换指令,old表示要替换的文本,new表示替换后的文本,g表示全局替换。

file.txt表示要操作的文件名。

举个例子,假如我们有一个文件file.txt,里面是一些话题的名称,需要将其中的“人工智能”改成“AI”,可以使用以下命令:sed 's/人工智能/AI/g' file.txt2. 删除行如果我们需要删除文件中的某些行,可以使用d指令。

语法如下:sed '/pattern/d' file.txt其中,pattern表示匹配的文本。

file.txt表示要操作的文件名。

这样,可以将匹配到的行删除。

举个例子,如果我们需要将文件file.txt中包含“敏感词”的行全部删除,可以使用以下命令:sed '/敏感词/d' file.txt3. 插入文本如果需要在文件中某一行的前面或后面插入一些文本,可以使用i或a 指令。

语法如下:sed '/pattern/i\ new_line' file.txt或者:sed '/pattern/a\ new_line' file.txt其中,pattern表示匹配的文本,i表示在匹配行前面插入,a表示在匹配行后面插入,new_line表示要插入的文本。

举个例子,如果我们需要在文件file.txt中第二行前面插入一行“这是第一行”,可以使用以下命令:sed '2i\ 这是第一行' file.txt4. 多重编辑如果需要对同一个文件进行多次编辑操作,可以使用多个sed命令,并用分号隔开。

语法如下:sed 'command1; command2; command3...' file.txt举个例子,如果我们需要将文件file.txt中的“敏感词”全部删除,并将“人工智能”改成“AI”,可以使用以下命令:sed '/敏感词/d; s/人工智能/AI/g' file.txt总结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是一种强大的文本处理工具,常用于对文本进行搜索、替换、删除等操作。

下面是一些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命令进行多行文本替换

Linux命令行使用技巧如何使用sed命令进行多行文本替换在Linux系统中,命令行是一种常见且强大的工具,可以用于各种操作和处理文本。

其中,sed命令是一种非常实用的文本处理工具,它可以帮助我们进行多行文本替换。

本文将介绍如何使用sed命令进行多行文本替换,帮助读者更好地利用Linux命令行。

一、sed命令简介sed命令是一种在Linux系统中用于处理文本的流编辑器。

它主要用于对文本进行修改、替换、删除等操作。

sed命令通过从输入文本中读取一行,并根据用户指定的规则进行处理,最后将处理结果输出。

在处理过程中,sed命令可以基于行号、正则表达式等进行定位和处理。

二、sed命令的基本语法sed命令的一般语法如下:sed 's/old_text/new_text/g' file其中,s表示替换操作(substitute),old_text表示需要被替换的文本,new_text表示替换后的文本,g表示全局替换。

file表示待处理的文件名。

三、使用sed命令进行多行文本替换有时候,我们需要对多行文本进行替换操作。

sed命令的默认行为是逐行处理文本内容,所以要进行多行替换,我们需要指定一些额外的操作。

以下是一些常用的sed命令选项和技巧:1. 多行替换的前提条件在使用sed命令进行多行替换之前,我们需要将待处理的多行文本保存到一个文件中,以便于sed命令进行操作。

假设我们有一个文件名为text.txt,其中包含多行文本。

2. 使用sed命令进行多行替换下面是一个简单的示例,展示了如何使用sed命令进行多行文本替换:sed '/start_pattern/,/end_pattern/s/old_text/new_text/g' text.txt其中,start_pattern和end_pattern分别表示多行文本的起始和结束位置,old_text和new_text分别表示需要进行替换的文本和替换后的文本。

linux下sed命令详解

linux下sed命令详解

linux下sed命令详解sed:Stream Editor⽂本流编辑,sed是⼀个“⾮交互式的”⾯向字符流的编辑器。

能同时处理多个⽂件多⾏的内容,可以不对原⽂件改动,把整个⽂件输⼊到屏幕,可以把只匹配到模式的内容输⼊到屏幕上。

还可以对原⽂件改动,但是不会再屏幕上返回结果。

sed命令的语法格式:sed的命令格式: sed [option] 'sed command'filenamesed的脚本格式:sed [option] -f 'sed script'filenamesed命令的选项(option):-n :只打印模式匹配的⾏-e :直接在命令⾏模式上进⾏sed动作编辑,此为默认选项-f :将sed的动作写在⼀个⽂件内,⽤–f filename 执⾏filename内的sed动作-r :⽀持扩展表达式-i :直接修改⽂件内容sed在⽂件中查询⽂本的⽅式:1)使⽤⾏号,可以是⼀个简单数字,或是⼀个⾏号范围x x为⾏号x,y表⽰⾏号从x到y/pattern查询包含模式的⾏/pattern /pattern查询包含两个模式的⾏pattern/,x在给定⾏号上查询包含模式的⾏x,/pattern/通过⾏号和模式查询匹配的⾏x,y!查询不包含指定⾏号x和y的⾏2)使⽤正则表达式、扩展正则表达式(必须结合-r选项)^锚点⾏⾸的符合条件的内容,⽤法格式"^pattern"$锚点⾏⾸的符合条件的内容,⽤法格式"pattern$"^$空⽩⾏.匹配任意单个字符*匹配紧挨在前⾯的字符任意次(0,1,多次).*匹配任意长度的任意字符\?匹配紧挨在前⾯的字符0次或1次\{m,n\}匹配其前⾯的字符⾄少m次,⾄多n次\{m,\}匹配其前⾯的字符⾄少m次\{m\}精确匹配前⾯的m次\{0,n\}:0到n次\<锚点词⾸----相当于 \b,⽤法格式:\<pattern\>锚点词尾,⽤法格式:\>pattern\<pattern\>单词锚点分组,⽤法格式:pattern,引⽤\1,\2[]匹配指定范围内的任意单个字符[^]匹配指定范围外的任意单个字符[:digit:]所有数字, 相当于0-9, [0-9]---> [[:digit:]][:lower:]所有的⼩写字母[:upper:]所有的⼤写字母[:alpha:]所有的字母[:alnum:]相当于0-9a-zA-Z[:space:]空⽩字符[:punct:]所有标点符号[java]1. #######sed的匹配模式⽀持正则表达式#####################2. sed'5 q'/etc/passwd#打印前5⾏3. sed-n '/r*t/p'/etc/passwd#打印匹配r有0个或者多个,后接⼀个t字符的⾏4. sed-n '/.r.*/p'/etc/passwd#打印匹配有r的⾏并且r后⾯跟任意字符5. sed-n '/o*/p'/etc/passwd#打印o字符重复任意次6. sed-n '/o\{1,\}/p'/etc/passwd#打印o字重复出现⼀次以上7. sed-n '/o\{1,3\}/p'/etc/passwd#打印o字重复出现⼀次到三次之间以上sed的编辑命令(sed command):p打印匹配⾏(和-n选项⼀起合⽤)=显⽰⽂件⾏号a\在定位⾏号后附加新⽂本信息i\在定位⾏号后插⼊新⽂本信息d删除定位⾏c\⽤新⽂本替换定位⽂本w filename写⽂本到⼀个⽂件,类似输出重定向 >r filename从另⼀个⽂件中读⽂本,类似输⼊重定向 <s使⽤替换模式替换相应模式q第⼀个模式匹配完成后退出或⽴即退出l显⽰与⼋进制ACSII代码等价的控制符{}在定位⾏执⾏的命令组,⽤分号隔开n从另⼀个⽂件中读⽂本下⼀⾏,并从下⼀条命令⽽不是第⼀条命令开始对其的处理N在数据流中添加下⼀⾏以创建⽤于处理的多⾏组g将模式2粘贴到/pattern n/y传送字符,替换单个字符对⽂件的操作⽆⾮就是”增删改查“,怎样⽤sed命令实现对⽂件的”增删改查“,玩转sed是写⾃动化脚本必须的基础之⼀。

Linux命令高级技巧使用sed命令进行行操作和插入

Linux命令高级技巧使用sed命令进行行操作和插入

Linux命令高级技巧使用sed命令进行行操作和插入sed命令是Linux系统中非常常用的文本处理工具之一,可以用于执行各种文本操作,包括行的操作和插入。

本文将介绍sed命令的高级技巧,重点关注行操作和插入的用法。

一、行操作sed命令可以实现对文本中指定行的操作,包括删除、替换和复制等操作。

1. 删除行要删除指定的行,可以使用sed命令的d选项。

示例:删除文件中的第5行```sed '5d' filename```2. 替换行要替换指定的行,可以使用sed命令的c选项。

示例:将文件中的第2行替换为"Hello world"```sed '2c\Hello world' filename```3. 复制行要复制指定的行,可以使用sed命令的p选项。

示例:复制文件中的第3行并输出两次```sed '3p' filename```二、插入操作sed命令还可以实现向文本中插入内容的操作,包括行前插入、行后插入和固定位置插入等。

1. 行前插入要在指定行的前面插入内容,可以使用sed命令的i选项。

示例:在文件的第4行前插入一行内容"New line"```sed '4i\New line' filename```2. 行后插入要在指定行的后面插入内容,可以使用sed命令的a选项。

示例:在文件的第6行后插入一行内容"New line"```sed '6a\New line' filename```3. 固定位置插入要在固定位置插入内容,可以使用sed命令的r选项。

示例:在文件的第8行后插入文件"insert.txt"的内容```sed '8r insert.txt' filename```三、高级技巧除了上述基本使用方式外,sed命令还有一些高级技巧可供使用。

Linux系统中sed命令的参数及用法详解

Linux系统中sed命令的参数及用法详解

Linux系统中sed命令的参数及用法详解Linux系统中sed 是一种在线编辑器,它一次处理一行内容。

下面由店铺为大家整理了Linux系统中sed命令的参数及用法详解的相关知识,希望对大家有帮助!Linux系统中sed命令的参数及用法详解:参数说明命令格式sed的命令格式:sed [options] 'command' file(s); sed的脚本格式:sed [options] -f file file(s);选项与参数:-n :使用安静(silent)模式。

在一般sed 的用法中,所有来自STDIN 的数据一般都会被列出到终端上。

但如果加上 -n 参数后,则只有经过sed 特殊处理的那一行(或者动作)才会被列出来。

-e :直接在命令列模式上进行 sed 的动作编辑;-f :直接将 sed 的动作写在一个文件内, -f filename 则可以运行 filename 内的 sed 动作;-r :sed 的动作支持的是延伸型正规表示法的语法。

(默认是基础正规表示法语法)-i :直接修改读取的文件内容,而不是输出到终端。

动作说明: [n1[,n2]]functionn1, n2 :不见得会存在,一般代表『选择进行动作的行数』,举例来说,如果我的动作是需要在10 到20 行之间进行的,则『 10,20[动作行为] 』function:a :新增,a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~c :取代,c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行!d :删除,因为是删除啊,所以 d 后面通常不接任何咚咚;i :插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);p :列印,亦即将某个选择的数据印出。

通常 p 会与参数 sed -n 一起运行~s :取代,可以直接进行取代的工作哩!通常这个s 的动作可以搭配正规表示法!例如 1,20s/old/new/g 就是啦!Linux系统中的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处匹配开始替换时,可以使用 /Ng:echo sksksksksksk | sed 's/sk/SK/2g' skSKSKSKSKSK echo sksksksksksk | sed 's/sk/SK/3g' skskSKSKSKSK echo sksksksksksk | sed 's/sk/SK/4g' skskskSKSKSK定界符以上命令中字符/ 在sed中作为定界符使用,也可以使用任意的定界符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开头的行都会被替换成它自已加localhost:sed '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。

Linux命令高级技巧使用sed进行文本替换和编辑

Linux命令高级技巧使用sed进行文本替换和编辑

Linux命令高级技巧使用sed进行文本替换和编辑Linux命令高级技巧:使用sed进行文本替换和编辑本文介绍了Linux系统中的命令行工具sed(Stream Editor)的高级技巧,主要包括如何使用sed进行文本替换和编辑。

sed是一种强大的文本处理工具,可以对文本进行模式匹配和替换,实现高效的批量处理。

一、sed的基本用法sed命令的基本语法为:sed [选项] '动作' 文件其中,选项用于指定sed的执行方式,动作用于指定对文本进行的操作,文件为需要处理的文本文件。

1.1 文本替换sed最常用的功能之一是进行文本替换。

它可以根据指定的模式匹配文本,并将其替换为指定的内容。

示例1:替换文本中的某个单词假设有一个文本文件file.txt,内容如下:Hello, world!我们可以使用以下sed命令将文本中的"world"替换为"Linux":sed 's/world/Linux/' file.txt该命令中的s表示替换操作,/world/表示被替换的模式,Linux表示替换后的内容。

示例2:替换文本行中的某个字符串假设有一个文本文件file.txt,内容如下:This is an example这是一个示例我们可以使用以下sed命令将文本中的"example"替换为"示例":sed 's/example/示例/' file.txt1.2 正则表达式模式在sed中,可以使用正则表达式模式进行更复杂的匹配和替换。

示例3:使用正则表达式进行替换假设有一个文本文件file.txt,内容如下:applebananacarrot我们可以使用以下sed命令将以字母"c"开头的行替换为空行:sed '/^c/d' file.txt该命令中的/^c/表示以字母"c"开头的模式,d表示删除匹配的行。

Linux命令高级技巧使用sed命令进行批量文本替换

Linux命令高级技巧使用sed命令进行批量文本替换

Linux命令高级技巧使用sed命令进行批量文本替换Linux命令高级技巧:使用sed命令进行批量文本替换sed(stream editor)是一个强大的Linux命令行工具,用于对文本进行编辑和转换。

它特别适合批量替换文本中的字符串、正则表达式匹配以及其他文本处理任务。

在本篇文章中,我们将学习如何运用sed 命令进行批量文本替换。

一、sed命令简介sed命令是一种非交互式的文本处理工具,它一次处理一行文本,从输入流中读取数据,并根据指定的规则对文本进行处理。

与一般的文本编辑器不同,sed并不直接修改原始文件,而是将修改结果输出到标准输出流。

二、基本语法sed命令的基本语法如下:```sed [options] 'command' filename```其中,options是一些可选参数,command是sed命令,用于指定对文本的操作,filename是要处理的文件名。

三、批量文本替换1. 替换单个字符串要替换文本中的单个字符串,可以使用s命令,它的基本语法为:```sed 's/old/new/' filename```其中,old是要被替换的字符串,new是替换后的新字符串。

以下是一个示例,将文本文件content.txt中的所有"apple"替换为"orange":```sed 's/apple/orange/' content.txt```2. 使用正则表达式进行替换sed支持基于正则表达式的替换操作。

要使用正则表达式替换文本,可以在s命令中加入正则表达式,并使用"/"进行分隔。

以下是一个示例,将文本文件content.txt中所有以"apple"开头的字符串替换为"orange":```sed 's/^apple/orange/' content.txt```3. 全局替换默认情况下,sed只替换每行中的第一个匹配项。

Linux-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。

linux之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的⼀个基本使⽤⽅式。

linux中sed详细用法

linux中sed详细用法

sed 是Stream Editor 的缩写,它是一种流编辑器,用于对文本进行过滤和转换。

sed 命令在Linux 中广泛使用,它可以执行包括查找和替换、插入和删除行、转换数据等在内的多种文本操作。

下面是sed 的一些基本用法:基本语法bashsed [选项] '命令' 文件...选项:用于指定sed 的执行方式,如-n 用于静默模式,只输出指定命令处理后的结果。

命令:sed 执行的具体操作,如's/old/new/g' 用于全局替换old 为new。

文件...:指定需要处理的文件,可以是一个或多个文件。

常用命令s/pattern/replacement/:替换功能,其中pattern 是要被替换的模式,replacement 是要替换成的内容。

g:全局替换,将所有匹配的pattern 替换为replacement。

i:忽略大小写。

例子:sed 's/old/new/g' filename 将文件filename 中所有old 替换为new。

p:打印,输出匹配到的行。

例子:sed 'p' filename 将输出文件filename 中所有匹配的行。

d:删除,删除匹配到的行。

例子:sed 'd' filename 将删除文件filename 中所有匹配的行。

a:追加,在匹配行的后面追加文本。

例子:sed 'a\\newline' filename 在文件filename 中所有匹配行的后面添加一个新行。

i:插入,在匹配行的前面插入文本。

例子:sed 'i\\newline' filename 在文件filename 中所有匹配行的前面插入一个新行。

c:替换,直接替换匹配到的行。

例子:sed 'c\\newline' filename 将文件filename 中所有匹配的行替换为一个新的行。

sed命令_Linuxsed命令:替换、删除、更新文件中的内容

sed命令_Linuxsed命令:替换、删除、更新文件中的内容

sed命令_Linuxsed命令:替换、删除、更新文件中的内容sed 是 stream editor 的缩写,中文称之为“流编辑器”。

sed 命令是一个面向行处理的工具,它以“行”为处理单位,针对每一行进行处理,处理后的结果会输出到标准输出(STDOUT)。

你会发现sed 命令是很懂礼貌的一个命令,它不会对读取的文件做任何贸然的修改,而是将内容都输出到标准输出中。

我们来看看 sed 的命令格式:sed command file•command 部分:针对每行的内容所要进行的处理(这部分很重要很重要)。

•file 部分:要处理的文件,如果忽略 file 参数,则 sed 会把标准输入作为处理对象。

sed 的工作原理是什么刚才我们说了,sed 命令是面向“行”进行处理的,每一次处理一行内容。

处理时,sed 会把要处理的行存储在缓冲区中,接着用sed 命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。

接着处理下一行,这样不断重复,直到文件末尾。

这个缓冲区被称为“模式空间”(pattern space)。

如前面所说,在这个处理过程中,sed 命令并不会对文件本身进行任何更改。

我们来一起看一个最最简单的sed 命令的例子,让大家对它有个感性的认识。

#我们先来看看原文件的内容[roc@roclinux ~]$ cat roc.txttest 1test2testtestXtestXBBtest#我们想用sed命令来删除文件中带字符“2”的行[roc@roclinux ~]$ sed '/2/d' roc.txttest 1testtestXtestXBBtest此例子是利用 sed 来删除 roc.txt 文件中含有字符“2”的行。

看到了吧,例子很简单,这个命令的command 部分是/2/d,而且它是用单引号括起来的。

你也一定要学着这样做,用到sed,别忘了用单引号将 command 部分括起来。

linux命令sed的用法

linux命令sed的用法

linux命令sed的用法
sed是一款Linux命令行工具,用于在文本文件中进行编辑操作。

它可以执行多种文本转换操作,如替换、删除、插入和替换等。

以下是一些常见的sed用法:
1. 替换文本中的字符:
sed 's/旧字符/新字符/g' 文件名
这个命令将文件名中的所有旧字符替换为新字符。

2. 删除文本中的行:
sed '/关键字/d' 文件名
这个命令将文件名中包含关键字的行删除。

3. 在文本中插入新行:
sed '1i 插入的文本' 文件名
这个命令将插入文本添加到文件名的第一行。

4. 在文本中追加新行:
sed '$a 追加的文本' 文件名
这个命令将添加文本追加到文件名的最后一行。

5. 替换文本中的指定行:
sed '2s/旧字符/新字符/g' 文件名
这个命令将文件名中第二行的所有旧字符替换为新字符。

除了以上用法,sed还有很多其他用法,如使用正则表达式进行匹配、使用变量进行替换等。

掌握sed的用法可以大大提高命令行工作效率。

Linux命令高级技巧使用sed进行正则表达式匹配和替换

Linux命令高级技巧使用sed进行正则表达式匹配和替换

Linux命令高级技巧使用sed进行正则表达式匹配和替换Linux命令高级技巧:使用sed进行正则表达式匹配和替换在Linux系统中,sed命令(Stream Editor)是一个强大而灵活的文本处理工具,常用于对文本进行增删改查操作。

sed的一个重要功能就是支持正则表达式的匹配和替换,通过灵活运用sed,可以快速高效地处理文本。

一、sed的基本语法和工作流程sed的基本语法如下所示:```sed [选项] 'command' filename```其中,command是一个或多个sed命令组成的脚本,可以是单引号或者双引号括起来;filename是待处理的文件名。

sed的工作流程如下:1. 逐行读取文件内容;2. 根据脚本中的命令对每一行进行处理;3. 输出处理后的结果。

二、使用sed进行正则表达式匹配sed可以使用正则表达式对文本进行匹配,从而实现各种操作。

下面是一些常见的示例:1. 替换指定字符串使用`sed 's/old/new/' filename`命令可以将文件中的`old`字符串替换为`new`字符串。

例如,将文件中的所有`apple`替换为`banana`,可以使用以下命令:```sed 's/apple/banana/' filename```2. 根据模式进行删除使用`sed '/pattern/d' filename`命令可以删除包含指定模式的行。

例如,删除文件中包含`hello`的行,可以使用以下命令:```sed '/hello/d' filename```3. 根据模式进行替换使用`sed 's/pattern/new/g' filename`命令可以将包含指定模式的字符串替换为新的字符串。

例如,将文件中所有以`apple`开头的字符串替换为`banana`,可以使用以下命令:```sed 's/^apple/banana/g' filename```三、使用sed进行高级正则表达式匹配除了基本的正则表达式匹配外,sed还支持一些高级的正则表达式匹配,提供更强大的功能。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

sedsed 编辑器是 Linux 系统管理员的工具包中最有用的资产之一,因此,有必要彻底地了解其应用Linux 操作系统最大的一个好处是它带有各种各样的实用工具。

存在如此之多不同的实用工具,几乎不可能知道并了解所有这些工具。

可以简化关键情况下操作的一个实用工具是 sed。

它是任何管理员的工具包中最强大的工具之一,并且可以证明它自己在关键情况下非常有价值。

sed 实用工具是一个“编辑器”,但它与其它大多数编辑器不同。

除了不面向屏幕之外,它还是非交互式的。

这意味着您必须将要对数据执行的命令插入到命令行或要处理的脚本中。

当显示它时,请忘记您在使用 Microsoft Word 或其它大多数编辑器时拥有的交互式编辑文件功能。

sed 在一个文件(或文件集)中非交互式、并且不加询问地接收一系列的命令并执行它们。

因而,它流经文本就如同水流经溪流一样,因而 sed 恰当地代表了流编辑器。

它可以用来将所有出现的 "Mr. Smyth" 修改为 "Mr. Smith",或将 "tiger cub" 修改为 "wolf cub"。

流编辑器非常适合于执行重复的编辑,这种重复编辑如果由人工完成将花费大量的时间。

其参数可能和一次性使用一个简单的操作所需的参数一样有限,或者和一个具有成千上万行要进行编辑修改的脚本文件一样复杂。

sed 是 Linux 和UNIX 工具箱中最有用的工具之一,且使用的参数非常少。

sed 的工作方式sed 实用工具按顺序逐行将文件读入到内存中。

然后,它执行为该行指定的所有操作,并在完成请求的修改之后将该行放回到内存中,以将其转储至终端。

完成了这一行上的所有操作之后,它读取文件的下一行,然后重复该过程直到它完成该文件。

如同前面所提到的,默认输出是将每一行的内容输出到屏幕上。

在这里,开始涉及到两个重要的因素—首先,输出可以被重定向到另一文件中,以保存变化;第二,源文件(默认地)保持不被修改。

sed 默认读取整个文件并对其中的每一行进行修改。

不过,可以按需要将操作限制在指定的行上。

该实用工具的语法为:sed [options] '{command}' [filename]在这篇文章中,我们将浏览最常用的命令和选项,并演示它们如何工作,以及它们适于在何处使用。

替换命令sed 实用工具以及其它任何类似的编辑器的最常用的命令之一是用一个值替换另一个值。

用来实现这一目的的操作的命令部分语法是:'s/{old value}/{new value}/'因而,下面演示了如何非常简单地将 "tiger" 修改为 "wolf":$ echo The tiger cubs will meet on Tuesday after school | sed's/tiger/wolf/'The wolf cubs will meet on Tuesday after school$注意如果输入是源自之前的命令输出,则不需要指定文件名—同样的原则也适用于 awk、sort 和其它大多数 Linux\UNIX 命令行实用工具程序。

多次修改如果需要对同一文件或行作多次修改,可以有三种方法来实现它。

第一种是使用"-e" 选项,它通知程序使用了多条编辑命令。

例如:$ echo The tiger cubs will meet on Tuesday after school | sed -e ' s/tiger/wolf/' -e 's/after/before/'The wolf cubs will meet on Tuesday before school$这是实现它的非常复杂的方法,因此 "-e" 选项不常被大范围使用。

更好的方法是用分号来分隔命令:$ echo The tiger cubs will meet on Tuesday after school | sed 's/tiger/wolf/; s/after/before/'The wolf cubs will meet on Tuesday before school$注意分号必须是紧跟斜线之后的下一个字符。

如果两者之间有一个空格,操作将不能成功完成,并返回一条错误消息。

这两种方法都很好,但许多管理员更喜欢另一种方法。

要注意的一个关键问题是,两个撇号 (' ') 之间的全部内容都被解释为 sed 命令。

直到您输入了第二个撇号,读入这些命令的 shell 程序才会认为您完成了输入。

这意味着可以在多行上输入命令—同时 Linux 将提示符从 PS1 变为一个延续提示符(通常为 ">")—直到输入了第二个撇号。

一旦输入了第二个撇号,并且按下了 Enter 键,则处理就进行并产生相同的结果,如下所示:$ echo The tiger cubs will meet on Tuesday after school | sed '> s/tiger/wolf/> s/after/before/'The wolf cubs will meet on Tuesday before school$全局修改让我们开始一次看似简单的编辑。

假定在要修改的消息中出现了多次要修改的项目。

默认方式下,结果可能和预期的有所不同,如下所示:$ echo The tiger cubs will meet this Tuesday at the same timeas the meeting last Tuesday |sed 's/Tuesday/Thursday/'The tiger cubs will meet this Thursday at the same timeas the meeting last Tuesday$与将出现的每个 "Tuesday" 修改为 "Thursday" 相反,sed 编辑器在找到一个要修改的项目并作了修改之后继续处理下一行,而不读整行。

sed 命令功能大体上类似于替换命令,这意味着它们都处理每一行中出现的第一个选定序列。

为了替换出现的每一个项目,在同一行中出现多个要替换的项目的情况下,您必须指定在全局进行该操作:$ echo The tiger cubs will meet this Tuesday at the same timeas the meeting last Tuesday |sed 's/Tuesday/Thursday/g'The tiger cubs will meet this Thursday at the same timeas the meeting last Thursday$请记住不管您要查找的序列是否仅包含一个字符或词组,这种对全局化的要求都是必需的。

sed 还可以用来修改记录字段分隔符。

例如,以下命令将把所有的 tab 修改为空格:sed 's// /g'其中,第一组斜线之间的项目是一个 tab,而第二组斜线之间的项目是一个空格。

作为一条通用的规则,sed 可以用来将任意的可打印字符修改为任意其它的可打印字符。

如果您想将不可打印字符修改为可打印字符—例如,铃铛修改为单词 "bell"—sed 不是适于完成这项工作的工具(但 tr 是)。

有时,您不想修改在一个文件中出现的所有指定项目。

有时,您只想在满足某些条件时才作修改—例如,在与其它一些数据匹配之后才作修改。

为了说明这一点,请考虑以下文本文件:$ cat sample_oneone 1two 1three 1one 1two 1two 1three 1$假定希望用 "2" 来替换 "1",但仅在单词 "two" 之后才作替换,而不是每一行的所有位置。

通过指定在给出替换命令之前必须存在一次匹配,可以实现这一点:$ sed '/two/ s/1/2/' sample_oneone 1two 2three 1one 1two 2two 2three 1$现在,使其更加准确:$ sed '> /two/ s/1/2/> /three/ s/1/3/' sample_oneone 1two 2one 1two 2two 2three 3$请再次记住唯一改变了的是显示。

如果您查看源文件,您将发现它始终保持不变。

您必须将输出保存至另一个文件,以实现永久保存。

值得重复的是,不对源文件作修改实际是祸中有福—它让您能够对文件进行试验而不会造成任何实际的损害,直到让正确命令以您预期和希望的方式进行工作。

以下命令将修改后的输出保存至一个新的文件:$ sed '> /two/ s/1/2/> /three/ s/1/3/' sample_one > sample_two该输出文件将所有修改合并在其中,并且这些修改通常将在屏幕上显示。

现在可以用 head、cat 或任意其它类似的实用工具来进行查看。

脚本文件sed 工具允许您创建一个脚本文件,其中包含从该文件而不是在命令行进行处理的命令,并且 sed 工具通过 "-f" 选项来引用。

通过创建一个脚本文件,您能够一次又一次地重复运行相同的操作,并指定比每次希望从命令行进行处理的操作详细得多的操作。

考虑以下脚本文件:$ cat sedlist/two/ s/1/2//three/ s/1/3/$现在可以在数据文件上使用脚本文件,获得和我们之前看到的相同的结果:$ sed -f sedlist sample_oneone 1two 2three 3two 2two 2three 3$注意当调用 "-f" 选项时,在源文件内或命令行中不使用撇号。

脚本文件,也称为源文件,对于想重复多次的操作和从命令行运行可能出错的复杂命令很有价值。

编辑源文件并修改一个字符比在命令行中重新输入一条多行的项目要容易得多。

限制行编辑器默认查看输入到流编辑器中的每一行,且默认在输入到流编辑器中的每一行上进行编辑。

这可以通过在发出命令之前指定约束条件来进行修改。

例如,只在此示例文件的输出的第 5 和第 6 行中用 "2" 来替换 "1",命令将为:$ sed '5,6 s/1/2/' sample_oneone 1two 1three 1one 1two 2two 2three 1$在这种情况下,因为要修改的行是专门指定的,所以不需要替换命令。

相关文档
最新文档