目录
- 1. 基本替换(sed 命令)
- 2. 替换时忽略大小写(sed + I 选项)
- 3. 替换时使用变量(避免特殊字符冲突)
- 4. 替换指定行(sed 限定行号)
- 5. 替换前备份原文件(sed -i.bak)
- 6. 使用 awk 替换
- 7. 使用 perl 替换
- 8. 替换多个文件(find + sed)
- 9. 交互式替换(vim 命令)
- 总结
如果你想在 linux 中替换文件中的某个字符串,可以使用以下命令:
1. 基本替换(sed 命令)
sed -i 's/原字符串/新字符串/g' 文件名
示例:将 file.txt
中所有的 old_text
替换成 new_text
sed -i 's/old_text/new_text/g' file.txt
选项说明:
-i
:直接修改文件(不加-i
则只输出到终端,不修改文件)。s/
:表示替换(substitute)。g
:全局替换(否则每行只替换第一个匹配项)。
2. 替换时忽略大小写(sed + I 选项)
sed -i 's/原字符串/新字符串/gI' 文件名
示例:替换 hello
为 hi
,并忽略大小写(Hello
、HELLO
也会被替换)
sed -i 's/hello/hi/gI' file.txt
3. 替换时使用变量(避免特殊字符冲突)
如果替换的内容包含 /
或其他特殊字符,可以改用 |
或 #
&jsnbsp;作为分编程客栈隔符:
sed -i "androids|原字符串|$变量名|g" 文件名
示例:用变量 $new_ip
替换文件中的 js;192.168.1.1
new_ip="10.0.0.1" sed -i "s|192.168.1.1|$new_ip|g" config.txt
4. 替换指定行(sed 限定行号)
sed -i '行号s/原字符串/新字符串/' 文件名
示例:仅在第 5 行替换 foo
为 bar
sed -i '5s/foo/bar/' file.txt
5. 替换前备份原文件(sed -i.bak)
sed -i.bak 's/old/new/g' file.txt
这会生成 file.txt.bak
备份文件,再修改 file.txt
。
6. 使用 awk 替换
awk '{gsub(/原字符串/, "新字符串"); print}' 原文件 > 新文件
示例:替换 data.txt
中的 apple
为 orange
,并保存到 new_data.txt
awk '{gsub(/apple/, "orange"); print}' data.txt > new_data.txt
7. 使用 perl 替换
perl -pi -e 's/原字符串/新字符串/g' 文件名
示例:替换 error
为 warning
perl -pi -e 's/error/waandroidrning/g' log.txt
8. 替换多个文件(find + sed)
find /路径 -type f -name "*.txt" -exec sed -i 's/old/new/g' {} \;
示例:替换 /etc/nginx/
目录下所有 .conf
文件中的 example.com
为 mysite.com
find /etc/nginx/ -type f -name "*.conf" -exec sed -i 's/example.com/mysite.com/g' {} \;
9. 交互式替换(vim 命令)
vim 文件名 :%s/原字符串/新字符串/g :wq
示例:在 vim
中替换 cat
为 dog
vim animals.txt :%s/cat/dog/g :wq
总结
需求 | 命令 |
---|---|
基本替换 | sed -i 's/old/new/g' file |
忽略大小写 | sed -i 's/old/new/gI' file |
使用变量 | `sed -i "s |
替换指定行 | sed -i '5s/old/new/' file |
备份原文件 | sed -i.bak 's/old/new/g' file |
多文件替换 | find /path -name "*.ext" -exec sed -i 's/old/new/g' {} \; |
以上就是Linux中替换文件中的某个字符串的常用命令详解的详细内容,更多关于Linux替换文件字符串的资料请关注编程客栈(www.devze.com)其它相关文章!
精彩评论