SED命令实例:删除与保留特定行
需积分: 9 195 浏览量
更新于2024-12-29
收藏 44KB DOC 举报
"这篇文档主要列举了`sed`命令的一些常用用例,涵盖了删除特定范围内容、删除重复行、删除特定行数、处理空行等多个方面。`sed`是流编辑器,常用于文本处理,它能读取文件或者标准输入,并按照指定的命令对每一行进行处理。"
在文本处理领域,`sed`是一个非常强大的工具,其功能包括替换、删除、插入等。以下是基于给定文件中提到的一些`sed`命令用例的详细解释:
1. **删除特定范围内的内容**:
```
sed '/Iowa/,/Montana/d'
```
这条命令会删除从包含"Iowa"的行到包含"Montana"的行之间的所有内容。
2. **删除相邻的重复行**:
```
sed '$!N;/^\(.*\)\n\1$/!P;D'
```
这个命令会比较当前行和下一行,如果内容相同,则删除下一行,只保留第一行。这类似于`uniq`命令的功能,但不适用于非连续的重复行。
3. **删除所有重复行**:
```
sed -n 'G;s/\n/&&/;/^\([-~]*\n\).*\n\1/d;s/\n//;h;P'
```
这个命令会在每一行后添加上前一行的内容,然后检查是否有重复,如果有,则删除,否则打印。
4. **删除非重复行**:
```
sed '$!N;s/^\(.*\)\n\1$/\1/;t;D'
```
这个命令会保留所有重复行,而删除所有非重复行。
5. **删除文件开头的n行**:
```
sed '1,10d'
```
这个命令会删除文件的前10行。
6. **删除文件的末尾行**:
```
sed '$d'
```
这将删除文件的最后一行。
7. **删除文件的最后n行**:
```
sed -e:a -e '$d;N;2,10ba' -e 'P;D' # 方法1
sed -n -e:a -e '1,10!{P;N;D;};N;ba' # 方法2
```
这两个命令可以用来删除文件的最后10行。
8. **删除8的倍数行**:
```
gsed '0~8d'
```
对于`gsed`(GNU sed),这个命令会删除每8行中的第8行,即删除所有8的倍数行。
9. **删除匹配模式的行**:
```
sed '/pattern/d'
```
这将删除包含`pattern`的行,`pattern`可以是任何有效的正则表达式。
10. **删除所有空行**:
```
sed '/^$/d' # 方法1
sed '/./!d' # 方法2
```
这两个命令都可以删除所有空行,其中方法1通过检查是否为空行,方法2则反向检查是否有任何字符。
11. **保留相邻空行的第一行并删除顶部和尾部的空行**:
```
sed '/./,/^$/!d'
sed '/^$/N;/\n$/D'
```
这两个命令分别删除文件顶部的空行,允许尾部保留一个空行,以及允许顶部保留一个空行,但尾部不留空行。
12. **保留相邻空行的前两行**:
```
sed '/^$/N;/\n$/N;//D'
```
这个命令会删除除了第一个和第二个相邻空行之外的所有空行。
13. **删除文件顶部的所有空行**:
```
sed '/./,$!d'
```
这将删除文件顶部的所有空行,直到遇到非空行。
14. **删除文件尾部的所有空行**:
```
sed -e:a -e '/^\n*$/{$d;N;ba' -e '}'
sed -e:a -e '/^\n*$/N;/\n$/ba'
```
这两个命令用于删除文件尾部的所有空行。
15. **删除每个段落的最后一行**:
```
sed -n '/^$/{p;h;};/./{x;/./p;}'
```
这个命令会打印每个段落(非空行之间的行)的第一行,然后跳过剩下的行。
此外,`sed`还可以用于更复杂的文本处理任务,例如在上述示例中提到的移除手册页的nroff标记。这些用例展示了`sed`的灵活性和实用性,使其成为文本处理任务的理想选择。
311 浏览量
691 浏览量
2013-03-19 上传
393 浏览量
135 浏览量
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
sheguiwei
- 粉丝: 0
- 资源: 11