Jam*_*272 30 command-line shell text-processing files
我想从文件中删除所有空行。即使该行包含空格或制表符,也应将其删除。
Sté*_*las 30
仅grep适用于非空白:
grep '[^[:blank:]]' < file.in > file.out
Run Code Online (Sandbox Code Playgroud)
[:blank:], 在字符范围 ( [...]) 内,称为 POSIX 字符类。有一些像[:alpha:], [:digit:]...[:blank:]匹配水平空白(在 POSIX 语言环境中,即空格和制表符,但在其他语言环境中可能有更多,例如 UTF8 语言环境中的所有 Unicode 水平间距字符)而[[:space:]]匹配水平和垂直白色空格字符(与[:blank:]垂直制表符、换页符等加号相同)。
grep '[:blank:]'
Run Code Online (Sandbox Code Playgroud)
将返回包含任何字符:、b、l、a、n或 的行k。字符类仅在 内被识别[...],并且^内[...]否定该集合。所以[^[:blank:]]意味着除了空白字符之外的任何字符。
cuo*_*glm 29
这是一个awk解决方案:
$ awk NF file
Run Code Online (Sandbox Code Playgroud)
使用awk,NF仅在非空行上设置。当此条件匹配时,awk默认操作print将打印整行。
怎么样:
sed -e 's/^[[:blank:]]*$//' source_file > newfile
Run Code Online (Sandbox Code Playgroud)
或者
sed -e '/^[[:blank:]]*$/d' source_file > newfile
Run Code Online (Sandbox Code Playgroud)
IE
对于每一行,替换:
^")[[:blank:]]") 零次或多次 (" *")$")有关 ::blank:: 和其他特殊字符的更多信息,请访问 http://www.zytrax.com/tech/web/regex.htm#special