linux sed命令 批量替换文件内容的方法
发布日期: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 rw 命令

读取文件内容

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 命令的强大之处,在日常文本处理中能事半功倍!

上一篇:Linux sed命令增删改查 附代码
下一篇:linux sed 批量替换字符串

发表评论

最新留言

初次前来,多多关照!
[***.217.46.12]2025年05月14日 12时32分51秒