
linux sed命令 批量替换文件内容的方法
1.8
发布日期:2025-04-06 02:25:41
浏览次数:8
分类:精选文章
本文共 1447 字,大约阅读时间需要 4 分钟。
Sed 命令详解
Sed 是一种强大的文本编辑工具,广泛应用于文本替换、删除、正则表达式匹配等操作。以下从基础到高级命令逐步解析 Sed 的使用方法。
1.1 Sed 命令基础
Sed 命令格式为:
sed [选项] [命令]
命令前没有地址范围,默认对所有行执行操作。
1.2 替换命令(s)
替换所有匹配项:
sed 's/原文/新文/g' 文件
例如:
替换所有“www.itbbs.cn”为“chinafar.com”:
sed -i "s/www.itbbs.cn/chinafar.com/g" `grep www.itbbs.cn -rl /home`
替换部分匹配项:
sed 's/原文/新文/p' 文件
仅替换匹配项中的第一个“原文”。
1.3 删除命令(d)
删除单行:
sed '1d' 文件
删除文件的第一行。
删除指定范围内的行:
sed '1,10d' 文件
删除文件的第1行到第10行。
按正则表达式删除行:
sed '/man/d' 文件
删除包含“man”字串的行。
1.4 正则表达式匹配
正则表达式语法:
.
表示任意字符*
表示任意次数^
表示开头$
表示结尾|
表示或
示例:
删除以“李”开头的行:
sed '/^李/d' filename
查找包含“中国”或“日本”的行:
sed '/中国|日本/g' filename
1.5 替换命令扩展
行首替换:
sed 's/^原文/新文/g' 文件
文件扩展名替换:
sed 's/.txt/.log/g' 文件
替换序列字符:
sed 's/,/,/g' 文件
将所有逗号替换为中文逗号。
1.6 复杂操作
文件中替换并追加新内容:
sed -i 's/old/g' file <(echo new)
插入新内容:
sed '/test/i新内容' 文件
提取特定内容:
sed -n '/^test/p' 文件
1.7 多命令处理
使用 -e
选项执行多命令:
sed -e 公�आप分别进行的操作
当执行多个命令时,命令顺序会依次执行。
1.8 r
和 w
命令
读取文件内容:
sed '/test/r file' 文件
将 file
中的内容添加到匹配行的下方。
写入文件:
sed -n '/test/w file' 文件
将匹配行写入 file
。
1.9 删除操作扩展
按正则表达式删除多行:
sed '/test/{d}' 文件
批量删除空行:
sed '/^ /d' 文件
按列删除非空行:
sed '/^$/', '/ (;.*)/s(nx)//p' file
依此类推,您可以根据需要编写更复杂的删除脚本。
2.2 正则表达式高级技巧
在实际应用中,正则表达式的写法决定了操作的精准度。以下是几个常见技巧:
- 捕获分组:在替换时保留某些字符。
- 工厂函数:利用函数扩展表达式,提高复杂度。
- 动态生成正则表达式:结合外部变量进行替换。
2.3 sed 脚本
sed 脚本文件使用 -f
选项调用。脚本中的命令需严格遵守格式规范,注释行使用 #
,且不能跨行。如果要在脚本中执行多个命令,用分号分隔。
2.4 sed 小技巧
- 在 shell 中引用变量时,使用双引号。
- 可以结合其他工具(如 grep,find)一起使用 sed。
- 理解 sed 的模式空间和保持缓存区的作用,灵活应用 h、G、x 命令。
通过实践和不断探索,您会发现 sed 命令的强大之处,在日常文本处理中能事半功倍!
发表评论
最新留言
初次前来,多多关照!
[***.217.46.12]2025年05月14日 12时32分51秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
LINQ能不能用系列(一)LINQ to Object 效率比对
2023-01-31
LINQ能不能用系列(二)LINQ to SQL 效率比对
2023-01-31
LinQ:list基础操作
2023-01-31
Linr PS toolkit(Photoshop开发人员辅助工具)
2023-01-31
Lintcode 74 First Bad Version solution 题解
2023-01-31
LintCode A + B Problem
2023-01-31
LintCode Python 简单级题目 8.旋转字符串
2023-01-31
LintCode 第一题fizz buzz
2023-01-31
lintcode-418-整数转罗马数字
2023-01-31
LintCode: Longest Common Substring
2023-01-31
Lintcode: Nuts & Bolts Problem
2023-01-31
Lintcode: O(1) Check Power of 2
2023-01-31
Lintcode: Topological Sorting
2023-01-31
LintCode_114 不同的路径,115 不同的路径 II
2023-01-31
linux */10 * * * *,Linux学习之路(10)
2023-01-31
linux - sftp常用命令介绍
2023-01-31
linux -- ubuntu修改IP地址、网关、dns
2023-01-31
Linux ---> 简单socket
2023-01-31