哪一个会更好:
sed -e '/^$/d' *.txt
sed 'g/^$/d' -i *.txt
另外,如何从文本文件中的每一行的开头和结尾删除空格?
答案 0 :(得分:36)
$ sed 's/^ *//; s/ *$//; /^$/d' file.txt
`s/^ *//` => left trim
`s/ *$//` => right trim
`/^$/d` => remove empty line
答案 1 :(得分:4)
这可能对您有用:
sed -r 's/^\s*(.*\S)*\s*$/\1/;/^$/d' file.txt
答案 2 :(得分:4)
使用awk更简单的方法。
cat filename.txt | awk 'NF' | awk '{$1=$1;print}'
awk 'NF'
- 这将删除所有空行/空行。
awk '{$1=$1;print}'
- 这将只删除尾随的空格(左右两边)
答案 3 :(得分:2)
类似,但使用ex
编辑器:
ex -s +"g/^$/de" +"%s/^\s\+//e" +"%s/\s\+$//e" -cwq foo.txt
对于多个文件:
ex -s +'bufdo!g/^$/de' +'bufdo!%s/^\s\+//e' +'bufdo!%s/\s\+$//e' -cxa *.txt
要递归替换,您可以使用a new globbing option(例如**/*.txt
)。