linux sed命令参数及用法详解

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$在这种情况下,因为要修改的行是专门指定的,所以不需要替换命令。

合集下载

Linux命令高级技巧使用sed和正则表达式进行文本替换和编辑

Linux命令高级技巧使用sed和正则表达式进行文本替换和编辑

Linux命令高级技巧使用sed和正则表达式进行文本替换和编辑Linux操作系统是一个广泛应用于服务器和嵌入式系统的开放源代码操作系统。

它以其稳定性、安全性和可定制性而闻名。

Linux命令行工具提供了丰富的功能,可以帮助用户进行各种任务,其中包括文本替换和编辑。

在本文中,我们将介绍如何使用sed命令和正则表达式来进行高级文本替换和编辑操作。

sed是一种用于流编辑的Linux命令行工具。

它可以读取文本文件,按照指定的规则进行修改,并将结果输出到标准输出或者写回文件中。

sed通过使用正则表达式来匹配和替换文本中的模式,并且可以进行大规模批量处理。

一、基本用法要使用sed命令进行文本替换,我们需要提供三个参数:替换模式、替换内容和输入文件。

下面是一个简单的例子:sed 's/old/new/' input.txt在上面的例子中,sed命令使用s命令进行替换操作,s代表substitute。

我们将模式中的old字符串替换为new字符串。

input.txt是我们要进行替换操作的输入文件。

二、正则表达式正则表达式是一种表达文本模式的工具,可以根据模式来进行文本匹配和处理。

在sed中,我们可以使用正则表达式来指定替换模式。

下面是一些常见的正则表达式符号和用法:1. ^:匹配行首。

2. $:匹配行尾。

3. .:匹配任意字符。

4. *:匹配前一个字符0次或多次。

5. []:匹配字符集中的任意一个字符。

6. [^]:匹配不在字符集中的任意一个字符。

7. \:转义字符。

例如,要替换以A开头的行,可以使用以下命令:sed 's/^A/new/' input.txt三、替换标志在sed命令中,我们还可以使用标志来控制替换操作的行为。

下面是一些常用的替换标志:1. g:全局替换,替换所有匹配到的字符串,默认只替换第一个匹配到的字符串。

2. i:忽略大小写,不区分大小写进行匹配。

3. p:打印匹配的行。

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下shell脚本中sed命令的用法

linux下shell脚本中sed命令的用法

linux下shell脚本中sed命令的⽤法先来给⼀个案例:#将old.sql⽂件中的符号“|”替换为“,”,并保存到test.sql⽂件中sed "s/|/,/g" "old.sql"> test.sql#将test.sql⽂件中的每⼀⾏最后的符号“,”删除sed -i 's/,$//g' test.sql #在test.sql⽂件中每⾏的开头添加左括号“(”sed -i 's/^/(&/g' test.sql#在test.sql⽂件中每⼀⾏的末尾添右括号“)”sed -i 's/$/&)/g' test.sql #统计⽂件old.sql的⾏数c=`sed -n '$=' /home/work/BaikalDB/tpch/load/data_tbl/old.sql`#在test.sql⽂件的第3⾏~3+99⾏的末尾添右括号“,”sed -i "3,+99 s/$/&,/" test.sql#在test.sql⽂件的第n⾏的开头添加“insert into table values”,这⾥的可以为具体的数字,也可以为变量的值,如j变量:${j}sed -i "niinsert into table values " test.sql#将test.sql⽂件的最后⼀⾏末尾的“,”换成“;”,这⾥的可以为具体的数字,也可以为变量的值,如j变量:${j}sed -i "ns/,$/;/" test.sql以下的知识点转⾃:⼀个简单的⼊门如图,⼀个简单的sed命令包含三个主要部分:参数、范围、操作。

要操作的⽂件,可以直接挂在命令⾏的最后。

除了命令⾏,sed也可以通过-f参数指定⼀个sed脚本,这个属于⾼级⽤法,不做过多描述。

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命令作为一款强大的文本处理工具,可以帮助我们快速进行文本替换、删除、插入等操作,提高工作效率。

linux中sed-i用法

linux中sed-i用法`sed`命令的基本语法为:```sed [选项] 'script' input_file```其中,`[选项]`表示sed命令的各种参数选项,`'script'`表示要执行的sed脚本,`input_file`表示要处理的输入文件。

而`sed -i`命令的使用方法为:```sed -i [选项] 'script' file1 [file2 ...]```其中,`[选项]`表示`sed -i`命令的各种参数选项,`'script'`表示要执行的sed脚本,`file1 [file2 ...]`表示要处理的文件列表。

下面详细介绍常用的`sed -i`选项和示例用法:1.使用正则表达式替换文本:使用`s/old/new/`语法将文本中的`old`字符串替换为`new`字符串。

```sed -i 's/old/new/' file.txt```2.只替换首次出现的字符串:在替换命令末尾添加`1`,只替换每行中第一个匹配到的字符串。

```sed -i 's/old/new/1' file.txt```3.忽略大小写进行替换:使用选项`-i`结合正则表达式选项`-i`,用于忽略大小写匹配并替换。

```sed -i 's/old/new/I' file.txt```4.执行多个替换操作:可以在脚本中使用多个`s/old/new/`命令来执行多个替换操作。

```sed -i -e 's/old1/new1/' -e 's/old2/new2/' file.txt```5.处理多个文件:`sed -i`支持同时处理多个文件,可以在命令中指定多个文件名。

```sed -i 's/old/new/' file1.txt file2.txt```6.创建备份文件:可以在选项中使用备份文件的后缀,它将在原始文件的修改之前创建一个备份文件。

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。

02.linux命令之批量替换文件内容sed

02.linux命令之批量替换⽂件内容sed1.sed详解⽤来⾃动编辑⼀个或多个⽂件;简化对⽂件的反复操作;编写转换程序等这⾥主要是批量的替换⽂件内容1)命令格式:sed [可选参数] {script-only-if-no-other-script} [⽂件]2).主要的参数有⼀下内容:Usage: sed [OPTION]... {script-only-if-no-other-script} [input-file]...-n, --quiet, --silentsuppress automatic printing of pattern space-e script, --expression=scriptadd the script to the commands to be executed-f script-file, --file=script-fileadd the contents of script-file to the commands to be executed--follow-symlinksfollow symlinks when processing in place-i[SUFFIX], --in-place[=SUFFIX]edit files in place (makes backup if SUFFIX supplied)-c, --copyuse copy instead of rename when shuffling files in -i mode-b, --binarydoes nothing; for compatibility with WIN32/CYGWIN/MSDOS/EMX (open files in binary mode (CR+LFs are not treated specially))-l N, --line-length=Nspecify the desired line-wrap length for the `l' command--posixdisable all GNU extensions.-r, --regexp-extendeduse extended regular expressions in the script.-s, --separateconsider files as separate rather than as a single continuouslong stream.-u, --unbufferedload minimal amounts of data from the input files and flushthe output buffers more often-z, --null-dataseparate lines by NUL characters--helpdisplay this help and exit--versionoutput version information and exit 参数解析:-e<script>或--expression=<script> 以选项中指定的script来处理输⼊的⽂本⽂件。

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。

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