`sed -i` 选项在 `sed` 命令中用于直接修改文件内容,即就地编辑文件。当你使用 `-i` 选项时,`sed` 会修改指定文件,而不是输出修改后的结果到标准输出。
语法:
sed -i 's/old_pattern/new_pattern/' filename
解释:
`-i`:表示就地编辑文件,即直接修改文件。
`'s/old_pattern/new_pattern/'`:这是一个 `sed` 的替换命令,它表示将文件中所有匹配 `old_pattern` 的部分替换为 `new_pattern`。
`filename`:要修改的文件名。
示例:
1. 替换文件中的某个字符串:
假设你有一个名为 `example.txt` 的文件,文件内容如下:
Hello, world!
This is a test.
Hello, everyone!
如果你想将文件中的 `Hello` 替换为 `Hi`,可以使用以下命令:
sed -i 's/Hello/Hi/' example.txt
执行后,`example.txt` 文件内容会变成:
Hi, world!
This is a test.
Hi, everyone!
2. 替换特定行的内容:
如果你只想修改文件中的某一行(比如第 2 行),你可以这样做:
sed -i '2s/test/example/' example.txt
这条命令将会把 `example.txt` 文件中的第二行的 `test` 替换为 `example`,并直接保存更改。
备份文件:
如果你想在执行就地编辑时保留文件的备份,可以使用 `-i` 后面指定一个扩展名来生成备份。例如:
sed -i.bak 's/Hello/Hi/' example.txt
这将会:
将 `example.txt` 中的所有 `Hello` 替换为 `Hi`。
创建一个名为 `example.txt.bak` 的备份文件,保存原始内容。
总结:
`sed -i` 让你可以直接修改文件内容,无需手动打开文件编辑。
如果不希望修改文件本身,可以省略 `-i`,而是将结果输出到标准输出。
使用 `-i` 时要小心,因为它会直接修改文件内容,且默认情况下没有备份机制。