sed编辑器工具可以删除数据流中不需要的空白行。删除数据流中的所有空白行很容易,但要选择性地删除空白行则需要一点创造力。下面南昌网络公司-百恒网络将为大家介绍一些简短的sed编辑器脚本,它们可以用来帮助删除数据中不需要的空白行。
1. 删除连续的空白行
数据文件中出现多余的空白行会非常让人讨厌。通常,数据文件中都会有空白行,但有时由于数据行的缺失,会产生过多的空白行。
删除连续空白行的简单办法是用地址区间来检查数据流,sed编辑器会对所有匹配指定地址区间的行执行该命令。
删除连续空白行的关键在于创建包含一个非空白行和一个空白行的地址区间。如果sed编辑器遇到了这个区间,它不会删除行。但对于不匹配这个区间的行(两个或更多的空白行),它会删除这些行。
下面是完成这个操作的脚本。
/./,/^$/!d
区间是/./到/^$/。区间的开始地址会匹配任何含有至少一个字符的行。区间的结束地址会匹配一个空行。在这个区间内的行不会被删除。
下面是实际的脚本。
$ cat data8.txt
This is line one.
This is line two.
This is line three.
This is line four.
$
$ sed '/./,/^$/!d' data8.txt
This is line one.
This is line two.
This is line three.
This is line four.
$
无论文件的数据行之间出现了多少空白行,在输出中只会在行间保留一个空白行。
2. 删除开头的空白行
数据文件开头有多个空白行时也很烦人。通常,在将数据从文本文件导入到数据库时,空白行会产生一些空项,涉及这些数据的计算都得作废。
删除数据流顶部的空白行不难。下面是完成这个功能的脚本。
/./,$!d
这个脚本用地址区间来决定哪些行要删掉。这个区间从含有字符的行开始,一直到数据流结束。在这个区间内的任何行都不会从输出中删除。这意味着含有字符的第一行之前的任何行都会删除。来看看这个简单的脚本。
$ cat data9.txt
This is line one.
This is line two.
$
$ sed '/./,$!d' data9.txt
This is line one.
This is line two.
$
测试文件在数据行之前有两个空白行。这个脚本成功地删除了开头的两个空白行,保留了数据中的空白行。
3. 删除结尾的空白行
很遗憾,删除结尾的空白行并不像删除开头的空白行那么容易。就跟打印数据流的结尾一样,删除数据流结尾的空白行也需要花点心思,利用循环来实现。
在开始讨论前,先看看脚本是什么样的。
sed '{
:start
/^n*$/{$d; N; b start }
}'
注意,在正常脚本的花括号里还有花括号。这允许你在整个命令脚本中将一些命令分组。该命令组会被应用在指定的地址模式上。地址模式能够匹配只含有一个换行符的行。如果找到了这样的行,而且还是后一行,删除命令会删掉它。如果不是后一行,N 命令会将下一行附加到它后面,分支命令会跳到循环起始位置重新开始。
下面是实际的脚本。
$ cat data10.txt
This is the first line.
This is the second line.
$ sed '{
> :start
> /^n*$/{$d ; N ; b start }
> }' data10.txt
This is the first line.
This is the second line.
$
这个脚本成功删除了文本文件结尾的空白行。
关于利用sed编辑器工具来删除数据流中不需要的空白行的方法就先介绍到这里,大家如有还有哪些不明白的地方,可来电和我们联系,百恒网络作为一家专业的南昌网络公司,精通各种网络技术,而且经验丰富,一定可以为您解除疑惑!