【sed学习】sed -i和sed -i -e有什么区别

前言: 项目脚本有句sed -i '$aPRODUCT_PACKAGES += rtk_mdnsd' device.mk sed -i -e '$a/vendor/bin/ipv4lld u:object_r:ipv4lld_exec:s0' sepolicy/file_contexts不太清楚sed -i和sed -i -e有什么区别,学习一下

sed -ised -i -e 是用于编辑文件中匹配模式的命令。它们的区别在于 -e 选项。

  • sed -i:直接编辑文件,并将结果写回原始文件中。不需要指定脚本文件。
  • sed -i -e:与 -i 类似,但是需要使用 -e 选项后跟一个或多个编辑指令,这些指令可以是正则表达式、替换操作等,以对文件进行更复杂的编辑。

例如,以下命令使用 sed -i 将文件中所有的 “old” 替换为 “new”:

sed -i 's/old/new/g' file.txt

而以下命令使用 sed -i -e 在替换之前先打印行号,并将 “old” 替换为 “new”:

sed -i -e '/old/=' -e 's/old/new/g' file.txt

请注意,在使用 -i 选项时,请务必小心操作,因为它会直接修改原始文件。建议在进行修改之前备份文件。


当使用 sed -i 命令时,可以直接编辑文件并将结果写回原始文件中。以下是几个示例:

  1. 将文件中的所有 “apple” 替换为 “orange”:

    sed -i 's/apple/orange/g' file.txt
    
  2. 删除文件中包含特定字符串的行:

    sed -i '/pattern/d' file.txt
    

而在使用 sed -i -e 命令时,可以在编辑之前先执行一些额外的操作,例如打印行号或添加其他替换规则。以下是几个示例:

  1. 在替换之前先打印包含 “apple” 的行号:

    sed -i -e '/apple/=' -e 's/apple/orange/g' file.txt
    
  2. 替换文件中的多个模式:

    sed -i -e 's/apple/orange/g' -e 's/banana/mango/g' file.txt
    
  3. 添加一个新行到以 “Hello” 开头的行之后:

    sed -i -e '/^Hello/a\New line' file.txt
    

以上示例展示了 sed -ised -i -e 之间的一些区别,后者可用于更复杂的编辑任务。请根据具体需求选择适合的命令和选项。


学习使用 sed 命令可以帮助你在文本处理中实现强大的编辑和转换功能。以下是一些学习 sed 的步骤和资源推荐:

  1. 学习基本语法:sed 命令可以通过一系列的编辑指令来操作文本。了解基本的 sed 语法,包括模式匹配、替换、删除等操作是很重要的。你可以查阅 sed 的官方文档或在线教程来学习详细的语法规则。

  2. 实践例子:通过实际的例子来练习 sed 的用法,例如替换文件中的字符串、删除特定行、添加新行等。逐步尝试各种不同的 sed 命令并观察结果。

  3. 正则表达式:了解正则表达式对于掌握 sed 是至关重要的,因为 sed 使用正则表达式进行模式匹配。学习常见的正则表达式语法以及元字符的含义,可以帮助你更好地理解和应用 sed 命令。

  4. 阅读文档和教程:sed 的官方文档提供了详细的命令说明和示例。此外,还有许多在线教程和博客文章可供参考。阅读这些资源可以帮助你更深入地理解 sed 的功能和用法。

以下是一些学习 sed 的资源推荐:

  • GNU sed 官方文档:https://www.gnu.org/software/sed/manual/sed.html
  • Sed - An Introduction and Tutorial by Bruce Barnett: http://www.grymoire.com/Unix/Sed.html
  • The sed FAQ: https://www.catonmat.net/blog/sed-one-liners-explained-part-one/
  • sed Cheat Sheet: https://www.cheatography.com/davechild/cheat-sheets/sed/

通过不断练习和实践,你将逐渐掌握 sed 命令的使用技巧,并能够灵活应用它来处理文本数据。

相关推荐

  1. sed学习sed -ised -i -e什么区别

    2024-01-06 19:58:03       28 阅读
  2. List、Set、Map什么区别

    2024-01-06 19:58:03       27 阅读
  3. 阿里云SSD云盘ESSD云盘什么区别

    2024-01-06 19:58:03       37 阅读
  4. 在Linux中,标准I/O文件I/O什么区别

    2024-01-06 19:58:03       16 阅读
  5. MONSDSSD区别

    2024-01-06 19:58:03       20 阅读
  6. 【c++】std liststd queue的区别

    2024-01-06 19:58:03       13 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-01-06 19:58:03       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-06 19:58:03       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-06 19:58:03       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-06 19:58:03       20 阅读

热门阅读

  1. docker安装dcm4chee

    2024-01-06 19:58:03       38 阅读
  2. C语言-蓝桥杯2023年第十四届省赛真题-砍树

    2024-01-06 19:58:03       31 阅读
  3. XXL-JOB学习笔记-新增企业微信告警通知

    2024-01-06 19:58:03       29 阅读
  4. Springboot实体类与数据表对应修改

    2024-01-06 19:58:03       43 阅读
  5. 【Mysql】 创建账号并赋予权限

    2024-01-06 19:58:03       43 阅读