📅  最后修改于: 2023-12-03 14:47:21.504000             🧑  作者: Mango
sed
是一款基于文本流的文本编辑器,可以用于从命令行或脚本中修改指定文件或标准输入流的文本内容。在本文中,我们将讨论如何使用 sed
从匹配的行、单词或字符中进行替换。
要在指定行中替换文本,可以使用以下命令格式:
sed 's/old_text/new_text/' filename
该命令将查找文件 filename
中包含 old_text
的行,并将其替换为 new_text
。请注意,该命令只替换每行中的一次出现。如果你想替换所有出现,必须在正则表达式中添加全局标志 g
,命令格式如下:
sed 's/old_text/new_text/g' filename
要替换行中指定位置的文本,可以使用以下命令格式:
sed 's/\(start_text\).*\(end_text\)/\1new_text\2/' filename
该命令将查找每行中包含 start_text
和 end_text
的文本,并将 start_text
和 end_text
之间的文本替换为 new_text
。
请注意,该命令中的 \1
和 \2
表示正则表达式中用于定义位置的分组。例如,\(start_text\)
表示分组 1,\(end_text\)
表示分组 2。
要替换指定字符的某些文本,可以使用以下命令格式:
sed 's/old_text/new_text/flags' filename
其中 flags
表示替换标志,可以是以下任何组合:
i
:忽略大小写。g
:替换所有出现。n
:仅在与正则表达式匹配的行上进行替换。p
:仅打印与正则表达式匹配的行。w
file:将替换的行写入指定的文件中。e
:将替换的表达式作为 shell 命令进行评估。例如,要替换文件 filename
中所有包含 old_text
的行中的 old_text
为 new_text
,可以使用以下命令:
sed 's/old_text/new_text/g' filename
要替换指定单词的某些字符,可以使用以下命令格式:
sed 's/\bword\b/new_word/g' filename
该命令将查找单独的 word
,并将其替换为 new_word
。请注意,该命令中的 \b
表示单词的边界。如果你想在单词的前后匹配其他字符,可以简单地删除 \b
。
现在,你已经了解了如何使用 sed
从匹配中进行替换。 sed
是一款非常强大的工具,可以大大简化文本处理任务,因此我们建议你花些时间学习它的更多用法。