sed替换命令
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进行正则表达式匹配与替换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和Unix系统中,sed命令是非常强大且常用的文本处理工具之一。
本文将深入探讨sed命令在对满足条件的行进行字符串替换方面的应用,帮助读者更全面地理解sed命令的使用方法和原理。
1. 什么是 sed 命令?在开始讨论如何对满足条件的行进行字符串替换之前,让我们先简单了解一下什么是sed命令。
sed是流编辑器(stream editor)的缩写,是一个用于对文本进行编辑的非交互式的命令行工具,它按行处理输入流,并根据给定的编辑指令来操作文本。
sed的基本工作流程是逐行读取输入,对每一行应用一系列编辑命令,然后将结果输出。
它广泛应用于文本处理、批量编辑和脚本编程等领域。
2. sed 替换命令在sed中,替换(substitution)是最常用的操作之一。
通过替换命令,可以将指定模式的文本替换为新的文本。
其基本语法如下:```bashsed 's/原始文本/替换文本/g'```- 's'代表替换命令,表示对满足条件的行进行替换操作。
- 原始文本是要被替换的文本模式,可以是正则表达式。
- 替换文本是用于替换原始文本的新文本。
- 'g'代表全局替换,表示对每一行中的所有匹配进行替换。
如果不加'g',则只会替换每一行的第一个匹配。
以下是一个简单的例子,演示了如何使用sed替换命令:```bash$ echo "hello world" | sed 's/hello/hi/'hi world```在这个例子中,我们将原始文本中的"hello"替换为"hi",并输出替换后的结果。
使用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通常用于过滤和转换文本数据,它可以执行的操作包括查找和替换、删除行、插入行、追加行、转换大小写等。
以下是sed的一些常见用法:
1. 查找和替换:使用sed命令可以查找并替换文本中的某个字符串,语法为:sed 's/old/new/g' filename,其中old表示要被替换的字符串,new表示替换后的字符串,g表示全局替换。
2. 删除行:使用sed命令可以删除文本中的某些行,语法为:sed 'Nd' filename,其中N表示要删除的行数。
3. 插入行:使用sed命令可以在文本中插入新的行,语法为:sed 'Niafter_text' filename,其中N表示在第N行后插入文本,i表示插入,after_text表示要插入的文本内容。
4. 追加行:使用sed命令可以在文本的末尾追加新的行,语法为:sed '$aafter_text' filename,$表示文本的末尾,a表示追加,after_text表示要追加的文本内容。
5. 转换大小写:使用sed命令可以将文本中的字母转换成大写或小写,语法为:sed 's/[a-z]/U&/g' filename(将小写字母转换成大写字母),sed 's/[A-Z]/L&/g' filename(将大写字母转换成小写字母)。
以上是sed的一些常见用法,它们可以帮助我们更轻松地处理文本文件。
Linux命令高级技巧使用sed进行字符串替换

Linux命令高级技巧使用sed进行字符串替换在Linux系统中,命令行是一种非常强大和灵活的工具。
它可以帮助我们完成各种任务,其中之一就是进行字符串替换。
sed命令是其中一个重要的工具,它可以在文本中进行搜索和替换操作。
在本文中,我们将学习如何使用sed命令进行字符串替换,并展示一些高级技巧来提高效率。
一、基本的字符串替换首先,让我们来看一个简单的例子,演示如何使用sed命令进行基本的字符串替换。
假设我们有一个文本文件,其中包含着一些名字,我们想将其中的某个名字替换为另一个名字。
我们可以使用以下的命令:```bashsed 's/old_name/new_name/g' file.txt```其中,old_name表示要被替换的字符串,new_name表示用来替换的字符串,g表示全局替换。
这条命令将会在文件file.txt中将所有的old_name替换为new_name。
例如,我们有一个名为names.txt的文件,内容如下:```textJohnAliceBob```如果我们想把名字Alice替换为Eva,可以使用以下命令:```bashsed 's/Alice/Eva/g' names.txt```执行此命令后,文件names.txt的内容将变为:```textJohnEvaBob```二、使用正则表达式进行替换sed命令还支持使用正则表达式进行替换操作,这使得替换更加灵活和强大。
下面是一个使用正则表达式进行替换的例子。
假设我们有一个文件phone_numbers.txt,其中包含一些电话号码。
这些电话号码的格式可能是不同的,我们想将它们统一成一种格式。
我们可以使用如下的命令:```bashsed 's/\([0-9]\{3\}\)-\([0-9]\{4\}\)-\([0-9]\{4\}\)/\1\2\3/g'phone_numbers.txt```在这个命令中,我们使用了正则表达式来匹配电话号码的格式。
Linux中使用sed命令实现文本替换和编辑
Linux中使用sed命令实现文本替换和编辑Linux是一种开放源代码的操作系统,广泛应用于服务器和嵌入式设备中。
在Linux系统中,sed命令是一个非常强大的文本处理工具,它可以用于实现文本替换和编辑功能。
本文将介绍如何在Linux系统中使用sed命令进行文本替换和编辑。
一、sed命令简介sed是一款流式文本编辑器,可以用来对文本进行替换、删除、插入、删除行以及基于正则表达式的其他操作。
它的命令格式通常是这样的:sed [选项] '[动作]' 文件选项可以是不同的标记,用于控制sed的行为。
动作是一系列的sed编辑命令,可以进行多次编辑操作。
文件是待处理的文本文件。
二、文本替换在sed命令中,最常用的功能之一就是文本替换。
sed提供了s命令来实现替换操作。
使用s命令的一般格式如下:sed 's/替换前/替换后/' 文件其中,替换前是待替换的文本,替换后是替换后的内容,文件是待处理的文本文件。
sed会从文件中搜索替换前的文本,并将其替换为替换后的内容。
例如,我们要将文件中的所有"apple"替换为"orange",可以使用以下命令:sed 's/apple/orange/' 文件三、替换指定行有时我们需要仅替换文件中的某些行,而不是全部替换。
sed提供了行号限定的功能,可以通过行号来指定要进行替换的行。
使用行号限定的替换格式如下:sed '行号 s/替换前/替换后/' 文件其中,行号是待替换行的行号,替换前和替换后的含义与前面相同。
例如,我们要替换文件中第5行的"apple"为"orange",可以使用以下命令:sed '5 s/apple/orange/' 文件四、替换所有匹配默认情况下,sed只会替换每行中第一个匹配的文本。
如果我们希望替换行中的所有匹配,可以使用g标记。
sed命令的替换规则
sed命令的替换规则简介:sed(stream editor)是一种流式文本编辑器,它可以用来对文本进行替换、删除、插入等操作。
sed命令的替换规则是其最常用的功能之一,本文将介绍sed命令的替换规则及其使用方法。
一、替换规则的基本语法sed命令的替换规则基本语法如下:sed 's/原字符串/目标字符串/g'其中,s表示替换操作,/原字符串/表示要替换的原始字符串,/目标字符串/表示替换后的目标字符串,g表示全局替换。
二、替换规则的常见用法1. 单词替换sed 's/原单词/目标单词/g'该命令将文本中所有的原单词替换为目标单词。
2. 删除行sed '/要删除的行/d'该命令将删除文本中包含要删除的行的所有行。
3. 插入行sed '/要插入的行/i 插入的内容'该命令将在文本中包含要插入的行之前插入指定的内容。
4. 替换行sed '行号c 替换的内容'该命令将指定行号的行替换为指定的内容。
5. 替换指定范围的内容sed '起始行号,结束行号s/原字符串/目标字符串/g'该命令将在指定的范围内将原字符串替换为目标字符串。
三、替换规则的高级用法1. 使用正则表达式sed 's/正则表达式/目标字符串/g'该命令可以使用正则表达式来匹配原字符串,并将匹配到的内容替换为目标字符串。
2. 使用&符号sed 's/原字符串/&目标字符串/g'该命令将原字符串替换为原字符串加上目标字符串。
3. 使用\1、\2等反向引用sed 's/\(正则表达式\)/\1目标字符串/g'该命令将使用正则表达式匹配到的内容作为反向引用,并将其替换为反向引用加上目标字符串。
四、实例演示为了更好地理解sed命令的替换规则,下面给出几个实例演示。
1. 替换文本中的单词假设我们有一个文本文件test.txt,内容如下:This is a test.我们可以使用sed命令将其中的test替换为example:sed 's/test/example/g' test.txt执行以上命令后,test.txt的内容将变为:This is a example.2. 删除指定行假设我们有一个文本文件test.txt,内容如下:Line 1Line 2Line 3我们可以使用sed命令删除其中的第2行:sed '2d' test.txt执行以上命令后,test.txt的内容将变为:Line 1Line 33. 在指定行之前插入内容假设我们有一个文本文件test.txt,内容如下:Line 1Line 2Line 3我们可以使用sed命令在第2行之前插入一行新的内容:sed '2i New Line' test.txt执行以上命令后,test.txt的内容将变为:Line 1New LineLine 2Line 34. 替换指定范围内的内容假设我们有一个文本文件test.txt,内容如下:Line 1Line 2Line 3我们可以使用sed命令将第2行到第3行之间的所有Line替换为New Line:sed '2,3s/Line/New Line/g' test.txt执行以上命令后,test.txt的内容将变为:Line 1New Line 2New Line 3五、总结本文介绍了sed命令的替换规则及其使用方法。
shell sed用法
shell sed用法Sed是一款非常强大的流编辑器,可以在命令行下对文本进行快速、高效的编辑和转换。
它可以用于查找、替换、删除和插入文本,在文本处理和数据处理中广泛使用。
1. 替换文本内容:Sed的最常见用法之一是替换文本内容。
使用如下格式的命令可以将文本中的某个字符串A替换为字符串B:sed 's/A/B/g' filename这个命令会在指定的文件中查找字符串A,并将其替换为B。
其中's'表示替换操作的开始,'g'表示全局替换的意思。
2. 删除指定行:如果需要删除某个文件中的某一行或者多行,可以使用如下命令:sed '3d' filename这个命令将删除指定文件中的第3行。
如果需要删除多行,可以使用逗号分隔行号。
例如,sed '2,4d' filename将删除第2行到第4行之间的内容。
3. 插入或添加文本:使用sed,可以很方便地在文件中添加新的文本。
例如,要在文件的开头插入一行文本,可以使用如下命令:sed '1i\新行' filename这个命令会在指定文件的第一行之前插入一行文本"新行"。
4. 文件内容的提取:假设需要从某个文件中提取出符合特定条件的内容,可以使用sed进行处理。
例如,要提取文件中包含某个特定字符串的行,可以使用如下命令:sed -n '/关键词/p' filename这个命令会在文件中搜索关键词,并将包含关键词的行打印出来。
总结:Sed是一款强大的流编辑器,在文本处理中具有广泛的应用。
它可以进行文本替换、行删除、行插入以及内容提取等功能。
掌握sed的基本用法,可以提高文本处理的效率和灵活性。
sed案例
sed案例sed是一种流编辑器,用于对文本进行查找、替换、插入和删除等操作。
下面是一些关于sed的案例,旨在帮助读者更好地理解和运用sed命令。
1. 替换文本内容sed命令最常见的用途之一是替换文本内容。
例如,将文本文件中的所有"apple"替换为"orange",可以使用以下命令:```sed 's/apple/orange/g' file.txt```2. 删除空白行如果文本文件中存在大量的空白行,可以使用sed命令删除这些空白行。
以下命令用于删除空白行:```sed '/^$/d' file.txt```3. 插入文本sed命令还可以用于在文本文件中插入新的文本行。
例如,以下命令将在每行之前插入一个新的文本行:```sed 'i\New Line' file.txt```4. 删除指定行如果需要删除文本文件中的特定行,可以使用sed命令。
例如,以下命令将删除第5行:```sed '5d' file.txt```5. 使用正则表达式sed命令可以与正则表达式一起使用,以便更精确地匹配和处理文本。
例如,以下命令将删除所有以字母开头的行:```sed '/^[a-zA-Z]/d' file.txt```6. 替换文件内容使用sed命令时,可以直接修改文件内容,而无需将结果输出到标准输出。
例如,以下命令将在文件中将所有的"apple"替换为"orange":```sed -i 's/apple/orange/g' file.txt```7. 仅显示匹配行如果只希望显示匹配特定模式的行,可以使用sed命令的-n选项。
以下命令将只显示包含"apple"的行:```sed -n '/apple/p' file.txt```8. 反向引用通过使用正则表达式和反向引用,sed命令可以非常灵活地处理文本。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
sed替换让我们看一下 sed 最有用的命令之一,替换命令。
使用该命令,可以将特定字符串或匹配的规则表达式用另一个字符串替换。
下面是该命令最基本用法的示例:Linux代码1.$ sed -e 's/foo/bar/' myfile.txt上面的命令将 myfile.txt 中每行第一次出现的 'foo'(如果有的话)用字符串'bar' 替换,然后将该文件内容输出到标准输出。
请注意,我说的是每行第一次出现,尽管这通常不是您想要的。
在进行字符串替换时,通常想执行全局替换。
也就是说,要替换每行中的所有出现,如下所示:Linux代码1.$ sed -e 's/foo/bar/g' myfile.txt在最后一个斜杠之后附加的 'g' 选项告诉 sed 执行全局替换。
关于 's///' 替换命令,还有其它几件要了解的事。
首先,它是一个命令,并且只是一个命令,在所有上例中都没有指定地址。
这意味着,'s///' 还可以与地址一起使用来控制要将命令应用到哪些行,如下所示:Linux代码1.$ sed -e '1,10s/enchantment/entrapment/g' myfile2.txt上例将导致用短语 'entrapment' 替换所有出现的短语 'enchantment',但是只在第一到第十行(包括这两行)上这样做。
Linux代码1.$ sed -e '/^$/,/^END/s/hills/mountains/g' myfile3.txt该例将用 'mountains' 替换 'hills',但是,只从空行开始,到以三个字符'END' 开始的行结束(包括这两行)的文本块上这样做。
关于 's///' 命令的另一个妙处是 '/' 分隔符有许多替换选项。
如果正在执行字符串替换,并且规则表达式或替换字符串中有许多斜杠,则可以通过在 's' 之后指定一个不同的字符来更改分隔符。
例如,下例将把所有出现的 /usr/local 替换成 /usr:Linux代码1.$ sed -e 's:/usr/local:/usr:g' mylist.txt在该例中,使用冒号作为分隔符。
如果不指定分隔符,则变成了如下:Linux代码1.$ sed -e 's/usr/local/usrg' mylist.txt这样就不能执行了如果需要在规则表达式中指定分隔符字符,可以在它前面加入反斜杠。
规则表达式混乱目前为止,我们只执行了简单的字符串替换。
虽然这很方便,但是我们还可以匹配规则表达式。
例如,以下 sed 命令将匹配从 '<' 开始、到 '>' 结束、并且在其中包含任意数量字符的短语。
下例将删除该短语(用空字符串替换):Linux代码1.$ sed -e 's/<.*>//g' myfile.html这是要从文件除去 HTML 标记的第一个很好的 sed 脚本尝试,但是由于规则表达式的特有规则,它不会很好地工作。
原因何在?当 sed 试图在行中匹配规则表达式时,它要在行中查找最长的匹配。
在我的前一篇 sed 文章中,这不成问题,因为我们使用的是 'd' 和 'p' 命令,这些命令总要删除或打印整行。
但是,在使用 's///' 命令时,确实有很大不同,因为规则表达式匹配的整个部分将被目标字符串替换,或者,在本例中,被删除。
这意味着,上例将把下行:<b>This</b> is what <b>I</b> meant.变成:meant.我们要的不是这个,而是:This is what I meant.幸运的是,有一种简便方法来纠正该问题。
我们不输入“'<' 字符后面跟有一些字符并以 '>' 字符结束”的规则表达式,而只需输入一个“'<' 字符,后面跟有任意数量非 '>' 字符,并以 '>' 字符结束”的规则表达式。
这将与最短、而不是最长的可能性匹配。
新命令如下:Linux代码1.$ sed -e 's/<[^>]*>//g' myfile.html在上例中,'[^>]' 指定“非'>'”字符,其后的 '*' 完成该表达式以表示“零或多个非 '>' 字符”。
对几个 html 文件测试该命令,将它们管道输出 "more",然后仔细查看其结果。
更多字符匹配'[ ]' 规则表达式语法还有一些附加选项。
要指定字符范围,只要字符不在第一个或最后一个位置,就可以使用 '-',如下所示:QUOTE:'[a-x]*'这将匹配零或多个全部为 'a'、'b'、'c'...'v'、'w'、'x' 的字符。
另外,可以使用 '[]' 字符类来匹配空格。
以下是可用字符类的相当完整的列表:字符类描述[] 字母数字 [a-z A-Z 0-9][] 字母 [a-z A-Z][] 空格或制表键[] 任何控制字符[] 数字 [0-9][] 任何可视字符(无空格)[] 小写 [a-z][] 非控制字符[] 标点字符[] 空格[] 大写 [A-Z][] 十六进制数字 [0-9 a-f A-F]尽可能使用字符类是很有利的,因为它们可以更好地适应非英语 locale(包括某些必需的重音字符等等).高级替换功能我们已经看到如何执行简单甚至有些复杂的直接替换,但是 sed 还可以做更多的事。
实际上可以引用匹配规则表达式的部分或全部,并使用这些部分来构造替换字符串。
作为示例,假设您正在回复一条消息。
下例将在每一行前面加上短语"ralph said: ":Linux代码1.$ sed -e 's/.*/ralph said: &/' origmsg.txt输出如下:ralph said: Hiya Jim, ralph said: ralph said:I sure like this sed stuff! ralph said:该例的替换字符串中使用了 '&' 字符,该字符告诉 sed 插入整个匹配的规则表达式。
因此,可以将与 '.*' 匹配的任何内容(行中的零或多个字符的最大组或整行)插入到替换字符串中的任何位置,甚至多次插入。
这非常好,但 sed 甚至更强大。
那些极好的带反斜杠的圆括号's///' 命令甚至比 '&' 更好,它允许我们在规则表达式中定义区域,然后可以在替换字符串中引用这些特定区域。
作为示例,假设有一个包含以下文本的文件:foo bar oni eeny meeny miny larry curly moe jimmy the weasel现在假设要编写一个 sed 脚本,该脚本将把 "eeny meeny miny" 替换成"Victor eeny-meeny Von miny" 等等。
要这样做,首先要编写一个由空格分隔并与三个字符串匹配的规则表达式。
'.* .* .*'现在,将在其中每个感兴趣的区域两边插入带反斜杠的圆括号来定义区域:'\(.*\) \(.*\) \(.*\)'除了要定义三个可在替换字符串中引用的逻辑区域以外,该规则表达式的工作原理将与第一个规则表达式相同。
下面是最终脚本:Linux代码1.$ sed -e 's/\(.*\) \(.*\) \(.*\)/Victor \1-\2 Von \3/' myfile.txt如您所见,通过输入 '\x'(其中,x 是从 1 开始的区域号)来引用每个由圆括号定界的区域。
输入如下:Victor foo-bar Von oni Victor eeny-meeny Von miny Victor larry-curly Von moe Victor jimmy-the Von weasel随着对 sed 越来越熟悉,您可以花最小力气来进行相当强大的文本处理。
您可能想如何使用熟悉的脚本语言来处理这种问题 -- 能用一行代码轻易实现这样的解决方案吗?组合使用在开始创建更复杂的 sed 脚本时,需要有输入多个命令的能力。
有几种方法这样做。
首先,可以在命令之间使用分号。
例如,以下命令系列使用 '=' 命令和 'p' 命令,'=' 命令告诉 sed 打印行号,'p' 命令明确告诉 sed 打印该行(因为处于 '-n' 模式)。
Linux代码1.$ sed -n -e '=;p' myfile.txt无论什么时候指定了两个或更多命令,都按顺序将每个命令应用到文件的每一行。
在上例中,首先将 '=' 命令应用到第 1 行,然后应用 'p' 命令。
接着,sed 继续处理第 2 行,并重复该过程。
虽然分号很方便,但是在某些场合下,它不能正常工作。
另一种替换方法是使用两个 -e 选项来指定两个不同的命令:Linux代码1.$ sed -n -e '=' -e 'p' myfile.txt然而,在使用更为复杂的附加和插入命令时,甚至多个 '-e' 选项也不能帮我们的忙。
对于复杂的多行脚本,最好的方法是将命令放入一个单独的文件中。
然后,用 -f 选项引用该脚本文件:Linux代码1.$ sed -n -f mycommands.sed myfile.txt这种方法虽然可能不太方便,但总是管用。
一个地址的多个命令有时,可能要指定应用到一个地址的多个命令。
这在执行许多 's///' 以变换源文件中的字和语法时特别方便。