sed的替换操作

简介: sed的替换操作

sed(Stream Editor)在Linux和类Unix系统中是一种非常强大的流编辑器,用于对输入流(例如文件或管道输入)进行文本的逐行编辑。其替换操作主要通过s(substitute)命令实现。以下是s命令的基本结构和用法:

sed 's/原字符串/新字符串/选项'
  • s:表示替换(substitute)操作。

  • /原字符串/:这部分是要被替换的模式或者确切的字符串,可以包含正则表达式。

  • /新字符串/:这是替换原字符串后的新内容。

  • 选项

    • g:全局(global)替换,在一行中找到的所有匹配项都会被替换。
    • 如果不加g,则默认只会替换每一行中首次出现的匹配项。

举例说明:

  1. 将每一行中的old_text替换为new_text

    sed 's/old_text/new_text/g' input_file.txt
    
  2. 只替换每一行的第一个old_text

    sed 's/old_text/new_text/' input_file.txt
    
  3. 如果原字符串或新字符串中包含特殊字符(如正斜杠/或其他特殊字符),需要用\进行转义:

    sed 's/\./,/g' input_file.txt  # 将句点替换为逗号
    
  4. 使用地址范围限定替换操作的行范围:

    sed '5,10s/original/replacement/g' input_file.txt  # 只在第5至第10行之间替换
    
  5. 对于变量引用,如果你需要在命令中动态插入变量值,由于shell中单引号不会展开变量,所以应使用双引号:

    pattern="old_pattern"
    replacement="new_pattern"
    sed "s/$pattern/$replacement/g" input_file.txt
    

以上就是sed进行替换操作的基础用法,实际上sed的功能远不止于此,还可以结合其他命令和选项完成更复杂的文本处理任务。

目录
相关文章
|
5天前
|
Unix Linux Perl
sed删除指定行
sed删除指定行
34 1
|
5天前
|
Linux Perl
`sed`命令删除文件中匹配特定模式的行
`sed`命令删除文件中匹配特定模式的行
39 4
|
9月前
|
Ubuntu Linux Perl
如何使用 sed 替换文件中的字符串?
如何使用 sed 替换文件中的字符串?
162 0
|
Linux 开发工具
Linux:vim文本单行替换和全局替换
Linux:vim文本单行替换和全局替换
93 0
|
Linux Perl
LINUX使用sed删除匹配行
LINUX使用sed删除匹配行
433 0
|
Shell Perl
SHELL中使用sed替换文本
SHELL中使用sed替换文本
109 0
|
Perl
Sed 删除包含某些字符串的行
sed -i '/关键字符/d' 文件名
1757 0
|
PHP Perl
sed 多行替换,多行模式处理字符串;一次替换
作者:凨 例: 需求:sed 替换多行(2到6行)替换为空,且返回系统配置信息 <?php /**CustomConfigurationStart*/ $c=require APP_PATH.'Common/Conf/config-custom.php'; /*COOKIES,SESSION域*/ $domain=preg_replace('/(.*\.|.*\/\/)?(
3316 0