shell sed实例详解
原创Shell sed实例详解
sed(stream editor)是一个强盛的文本处理工具,它允许用户通过脚本或者命令行进行文本的编辑。sed命令行工具广泛应用于Linux和Unix系统中,特别适合于处理大量文本数据。本文将详细介绍sed的一些常用实例,帮助读者更好地明白和运用sed命令。
1. 替换文本
替换是sed命令中最常用的功能之一。以下是一个单纯的替换实例,它将文件中所有的“old”替换为“new”:
sed 's/old/new/g' filename
解释:
- `s`:即替换命令。
- `old`:即要被替换的文本。
- `new`:即替换后的文本。
- `g`:即全局替换,即将所有匹配的文本都替换掉。
- `filename`:即要处理的文件名。
2. 增多或删除行
以下实例演示了怎样在文件中插入或删除行。
2.1 插入行
sed '2i\This is a new line' filename
解释:
- `2i`:在文件的第2行后插入新行。
- `This is a new line`:要插入的新行内容。
2.2 删除行
sed '2d' filename
解释:
- `2d`:删除文件中的第2行。
3. 替换并打印不匹配的行
有时,我们大概只对文件中不匹配特定模式的行感兴趣。以下实例将打印出所有不包含“example”的行:
sed '/example/d' filename
解释:
- `/example/`:匹配包含“example”的行。
- `d`:删除匹配的行。
4. 打印匹配的行
如果我们只想打印出包含特定模式的行,可以使用以下命令:
sed '/example/p' filename
解释:
- `/example/`:匹配包含“example”的行。
- `p`:打印匹配的行。
5. 替换文件名
以下实例演示了怎样使用sed命令替换文件名中的特定字符串:
sed 's/oldname/newname/g' filename
解释:
- `s/oldname/newname/g`:将文件名中的“oldname”替换为“newname”,`g`即全局替换。
6. 合并多行
有时,我们大概需要将文件中的多行合并为一行。以下实例将文件中的连续空行合并为一行:
sed '/^$/N; s/ / /g' filename
解释:
- `/^$/N`:将当前行与下一行合并,如果当前行是空行。
- `s/ / /g`:将合并后的多行中的换行符替换为空格。
7. 查找并替换文件中的所有实例
以下实例演示了怎样查找文件中的所有实例,并将它们替换为另一个字符串:
sed -i 's/old/new/g' filename
解释:
- `-i`:即直接在原文件上进行修改。
- `s/old/new/g`:将文件中的所有“old”替换为“new”。
总结
sed命令是一个非常强盛的文本处理工具,它可以帮助我们迅速处理大量文本数据。通过本文的实例,读者应该能够掌握sed的基本用法,并能够在实际工作中灵活运用。