前言: 项目脚本有句
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
的资源推荐:
sed
官方文档:https://www.gnu.org/software/sed/manual/sed.htmlsed
FAQ: https://www.catonmat.net/blog/sed-one-liners-explained-part-one/sed
Cheat Sheet: https://www.cheatography.com/davechild/cheat-sheets/sed/通过不断练习和实践,你将逐渐掌握 sed
命令的使用技巧,并能够灵活应用它来处理文本数据。