当前位置:   article > 正文

Linux常用指令之——sed用法_sed修改文件某一行

sed修改文件某一行


sed 是一种非交互式的文本编辑器,常用于处理文本文件。它可以对文本文件进行替换、删除、添加、查找等操作。在本文中,我们将介绍 sed 的用法及其应用场景。

1. 替换文本中的某个字符串

sed 可以用于替换文本中的某个字符串。例如,我们要将文本文件 filename 中所有的 oldstring 替换成 newstring,可以使用以下命令:

sed -i 's/oldstring/newstring/g' filename
  • 1

其中,-i 选项表示直接在原文件中进行修改(in-place editing),s/oldstring/newstring/g 表示将 filename 文件中所有的 oldstring 字符串替换newstring

s/oldstring/newstring/flags
  • 1

其中:

  • oldstring 表示要被替换的字符串;
  • newstring 表示替换后的字符串;
  • flags 表示替换标志,常用的标志有 gi
    • g 表示进行全局替换(global),即一个行中有多个匹配字符串时都进行替换;
    • i 表示进行不区分大小写的替换(ignore case),即在匹配字符串时忽略大小写。

例如,s/DB_URL/$DB_URL/g 命令表示将文本中所有出现的 DB_URL 字符串替换成 $DB_URL 变量所代表的值,并且进行全局替换(即一个行中有多个 DB_URL 字符串时都进行替换)。

2. 删除文本中的某行或多行

sed 还可以用于删除文本中的某行或多行。例如,我们要将文本文件 filename 中第 N 行或第 N 行到第 M 行删除,可以使用以下命令:

sed -i 'Nd' filename
  • 1

sed -i 'N,Md' filename
  • 1

其中,d 表示删除操作。

3. 在指定行后添加一行或多行

sed 还可以用于在文本中指定行后添加一行或多行。例如,我们要在文本文件 filename 中第 N 行或第 N 行到第 M 行后添加 newstring,可以使用以下命令:

sed -i 'N a\newstring' filename
  • 1

sed -i 'N,M a\newstring' filename
  • 1

其中,a 表示添加操作。

4. 在指定行前添加一行或多行

sed 还可以用于在文本中指定行前添加一行或多行。例如,我们要在文本文件 filename 中第 N 行或第 N 行到第 M 行前添加 newstring,可以使用以下命令:

sed -i 'N i\newstring' filename
  • 1

sed -i 'N,M i\newstring' filename
  • 1

其中,i 表示插入操作。

5. 删除文本中某个字符串所在行的所有内容

sed 还可以用于删除文本中某个字符串所在行的所有内容。例如,我们要删除文本文件 filename 中包含 oldstring 的行及其所有内容,可以使用以下命令:

sed -i '/oldstring/d' filename
  • 1

6. 在文本中查找某个字符串并显示其所在行

sed 还可以用于在文本中查找某个字符串并显示其所在行。例如,我们要在文本文件 filename 中查找包含 searchstring 的行,并显示这些行的内容,可以使用以下命令:

sed -n '/searchstring/p' filename
  • 1

其中,-n 选项表示不输出匹配行之外的内容,/searchstring/p 表示查找包含 searchstring 的行并输出其内容。

7. 在指定行后插入一个文件中的内容

sed 还可以用于在文本中指定行后插入一个文件中的内容。例如,我们要在文本文件 filename 中第 N 行或第 N 行到第 M 行后插入文件 insert_file 中的内容,可以使用以下命令:

sed -i 'N r insert_file' filename
  • 1

sed -i 'N,M r insert_file' filename
  • 1

其中,r 表示读取操作。

8. 将文本中某个字符串替换成另一个文件中的内容

sed 还可以用于将文本中某个字符串替换成另一个文件中的内容。例如,我们要将文本文件 filename 中的所有 oldstring 替换成文件 replace_file 中的内容,可以使用以下命令:

sed -i '/oldstring/r replace_file' filename
  • 1

其中,r 表示读取操作。

9. 执行多个操作

我们还可以在一个 sed 命令中执行多个操作。例如,我们要将文本文件 filename 中的所有 oldstring 替换成 newstring 并将结果输出到 output_file 中,可以使用以下命令:

sed -e 's/oldstring/newstring/g' filename > output_file
  • 1

其中,-e 选项表示执行多个操作。

10. 正则表达式

sed 中使用正则表达式可以更灵活地进行文本处理。例如,我们要将文本文件 filename 中所有以 abc 开头的行删除,可以使用以下命令:

sed -i '/^abc/d' filename
  • 1
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/628009
推荐阅读
相关标签
  

闽ICP备14008679号