sed 替换文件中的字符串
- sed 替换文件内容
abcABC|abcABC
abcABC|abcABC
abcABC|abcABC
- sed替换 将文件中每行第一次出现的a用字符串A替换,修改后内容会到标准输出,不会修改原文件
$ sed -e 's/a/A/' sed替换.txt
AbcABC|abcABC
AbcABC|abcABC
AbcABC|abcABC
- g参数 sed 对文件中所有符合的字符串都被替换,修改后内容会到标准输出,不会修改原文件
$ sed -e 's/a/A/g' sed替换.txt
AbcABC|AbcABC
AbcABC|AbcABC
AbcABC|AbcABC
- 选项 i sed 修改文件,注意:选项 i 指令会修改原文件!!!
$ sed -i 's/a/A/g' sed替换.txt
$ cat sed替换.txt
AbcABC|AbcABC
AbcABC|AbcABC
AbcABC|AbcABC
- 批量操作当前目录下以 .txt 结尾的文件
$ sed -i 's/b/B/g' ./*.txt
$ cat sed替换.txt
ABcABC|ABcABC
ABcABC|ABcABC
ABcABC|ABcABC
- 递归修改文件
$ sed -i 's/A/a/g' `grep A -rl --include="*.txt" ./`
说明:grep 命令中:
选项`r`表示查找所有子目录
`l`表示仅列出符合条件的文件名,
用来传给sed命令做操作,
`--include="*.txt"` 表示仅查找 .txt 结尾的文件
- 选项 -i.bak sed 修改文件会备份文件
$ sed -i.bak 's/c/C/g' *.txt
$ cat sed替换.txt
ABCABC|ABCABC
ABCABC|ABCABC
ABCABC|ABCABC
--备份的文件
sed替换.txt.bak
--如果不需要备份文件,使用空字符串来取消备份,或者留空
$ sed -i '' 's/c/C/g' ./*.txt
- 递归修改文件并且备份文件
$ sed -i.bak 's/a/A/g' `grep a -rl --include="*.txt" ./`
说明:grep 命令中:
选项`r`表示查找所有子目录
`l`表示仅列出符合条件的文件名,
用来传给sed命令做操作,
`--include="*.txt"` 表示仅查找 .txt 结尾的文件
- 选项说明:
- 选项
i
的用途是直接在文件中进行替换 - 选项
i.bak
备份文件
参数说明:
g 全局替换,否则只替换文件中每行第一次出现的
e 表示多点编辑,可以执行多条命令
动作说明:
a :新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~
d :删除,因为是删除啊,所以 d 后面通常不接任何东东;
i :插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);
s :取代,可以直接进行取代的工作哩!通常这个 s 的动作可以搭配正规表示法!例如 1,20s/old/new/g 就是啦!
- 参数用法示例:
--a :新增,在"sed替换"文件的第1行后添加一行,并将结果输出到标准输出
$ sed -i 1a\newline sed替换.txt
result:
ABCABC|ABCABC
newline
ABCABC|ABCABC
ABCABC|ABCABC
--d :删除,将 sed替换.txt 的内容列出,同时将第 2 行删除!
$ sed -i '2d' sed替换.txt
ABCABC|ABCABC
ABCABC|ABCABC
ABCABC|ABCABC
--i :插入, 结合$a 新增,利用 sed 直接在 sed替换.txt 最后一行加入 # This is a test:
$ sed -i '$a #This is a test' sed替换.txt
ABCABC|ABCABC
ABCABC|ABCABC
ABCABC|ABCABC
#This is a test
- sed 高级用法:https://www.cnblogs.com/tureno/articles/6677942.html
- sed菜鸟教程:https://www.runoob.com/linux/linux-comm-sed.html