我想从文件中删除所有空行。即使该行包含空格或制表符,也应将其删除。
我想从文件中删除所有空行。即使该行包含空格或制表符,也应将其删除。
Answers:
仅grep用于非空白:
grep '[^[:blank:]]' < file.in > file.out
[:blank:]字符范围([...])内的POSIX字符类。有一些like [:alpha:],[:digit:]... [:blank:]匹配水平空白(在POSIX语言环境中,是空格和制表符,但在其他语言环境中则可能更多,例如UTF8语言环境中的所有Unicode水平间距字符),而同时[[:space:]]匹配水平和垂直白色空格字符(与[:blank:]诸如垂直制表符,换页符之类的其他内容一样)。
grep '[:blank:]'
都将返回一个包含任何字符的线条,:,b,l,a,n或k。字符类仅在中识别[...],并且^在[...]集合中取反。因此[^[:blank:]]表示除空白字符以外的任何字符。
[^[:blank:]]$只匹配以非空白结尾的行。我们要包含一个非空行的任何地方
grep -E '\S'都行不通吗?
怎么样:
sed -e 's/^[[:blank:]]*$//' source_file > newfile
要么
sed -e '/^[[:blank:]]*$/d' source_file > newfile
即
对于每一行,替换为:
^”)[[:blank:]]”)零次或多次(“ *”)$”)有关:: blank ::和其他特殊字符的详细信息,请访问http://www.zytrax.com/tech/web/regex.htm#special
[[:space:]]包括标签。如果不是这样,则如果制表符后面有空格,则您的正则表达式将失败。
wctype(3)和isalpha(3)联机帮助页介绍一下字符类将匹配。
尝试前三通:
ex -s +'v/\S/d' -cwq test.txt
对于多个文件(就地编辑):
ex -s +'bufdo!v/\S/d' -cxa *.txt
注意:该:bufdo命令不是POSIX。
无需修改文件(只需在标准输出上打印):
cat test.txt | ex -s +'v/\S/d' +%p +q! /dev/stdin
使用以下命令:
grep '\S' FILE
删除所有行,包括空格或制表符。
否则,删除不包括带有空格/制表符的行,请使用:
grep . FILE
例如:
$ printf "line1\n\nline2\n \nline3\n" > FILE
$ cat -v FILE
line1
line2
line3
$ grep '\S' FILE
line1
line2
line3
$ grep . FILE
line1
line2
line3
也可以看看:
sed:使用sed删除空行awk:使用awk删除空白行
$for的行尾吗?