我想从文件中删除所有空行。即使该行包含空格或制表符,也应该将其删除。
答案1
这是一个awk
解决方案:
$ awk NF file
对于awk
,NF
仅在非空行上设置。当此条件匹配时,awk
默认操作print
将打印整行。
答案2
仅grep
适用于非空白:
grep '[^[:blank:]]' < file.in > file.out
[:blank:]
,在字符范围 ( [...]
) 内,称为 POSIX 字符类。有一些像[:alpha:]
, [:digit:]
...[:blank:]
匹配水平空白(在 POSIX 语言环境中,即空格和制表符,但在其他语言环境中可能有更多,如 UTF8 语言环境中的所有 Unicode 水平间距字符),同时[[:space:]]
匹配水平和垂直白色空格字符([:blank:]
与垂直制表符、换页符等相同)。
grep '[:blank:]'
:
将返回包含任何字符 、 、b
、l
、a
或n
的行k
。字符类仅在 内被识别[...]
,并且^
在 内[...]
否定该集合。 So[^[:blank:]]
表示除空白字符之外的任何字符。
答案3
怎么样:
sed -e 's/^[[:blank:]]*$//' source_file > newfile
或者
sed -e '/^[[:blank:]]*$/d' source_file > newfile
IE
对于每一行,替换:
- 如果它开始(“
^
”) - 带有空格或制表符 ("
[[:blank:]]
") 零次或多次 ("*
") - 然后是行尾 ("
$
")
有关 ::blank:: 和其他特殊字符的更多信息,请访问http://www.zytrax.com/tech/web/regex.htm#special
答案4
您可以使用sed
命令删除空行:
sed '/^$/d' in > out
该命令删除文件“in”中的所有空行