【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 -i
和 sed -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
命令时,可以直接编辑文件并将结果写回原始文件中。以下是几个示例:
-
将文件中的所有 “apple” 替换为 “orange”:
sed -i 's/apple/orange/g' file.txt
-
删除文件中包含特定字符串的行:
sed -i '/pattern/d' file.txt
而在使用 sed -i -e
命令时,可以在编辑之前先执行一些额外的操作,例如打印行号或添加其他替换规则。以下是几个示例:
-
在替换之前先打印包含 “apple” 的行号:
sed -i -e '/apple/=' -e 's/apple/orange/g' file.txt
-
替换文件中的多个模式:
sed -i -e 's/apple/orange/g' -e 's/banana/mango/g' file.txt
-
添加一个新行到以 “Hello” 开头的行之后:
sed -i -e '/^Hello/a\New line' file.txt
以上示例展示了 sed -i
和 sed -i -e
之间的一些区别,后者可用于更复杂的编辑任务。请根据具体需求选择适合的命令和选项。
学习使用 sed
命令可以帮助你在文本处理中实现强大的编辑和转换功能。以下是一些学习 sed
的步骤和资源推荐:
-
学习基本语法:
sed
命令可以通过一系列的编辑指令来操作文本。了解基本的sed
语法,包括模式匹配、替换、删除等操作是很重要的。你可以查阅sed
的官方文档或在线教程来学习详细的语法规则。 -
实践例子:通过实际的例子来练习
sed
的用法,例如替换文件中的字符串、删除特定行、添加新行等。逐步尝试各种不同的sed
命令并观察结果。 -
正则表达式:了解正则表达式对于掌握
sed
是至关重要的,因为sed
使用正则表达式进行模式匹配。学习常见的正则表达式语法以及元字符的含义,可以帮助你更好地理解和应用sed
命令。 -
阅读文档和教程:
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
命令的使用技巧,并能够灵活应用它来处理文本数据。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!