1、测试数据
root@DESKTOP-1N42TVH:/home/test# ls a.txt root@DESKTOP-1N42TVH:/home/test# cat a.txt i A E F d q d M d e N f root@DESKTOP-1N42TVH:/home/test# cat -A a.txt ## 空行中没有空格或者制表符 i A E F$ $ d q d M$ $ $ d e N f$ root@DESKTOP-1N42TVH:/home/test# sed -n l a.txt i A E F$ $ d q d M$ $ $ d e N f$
2、sed删除空行
root@DESKTOP-1N42TVH:/home/test# ls a.txt root@DESKTOP-1N42TVH:/home/test# cat a.txt i A E F d q d M d e N f root@DESKTOP-1N42TVH:/home/test# cat -A a.txt i A E F$ $ d q d M$ $ $ d e N f$ root@DESKTOP-1N42TVH:/home/test# sed '/^$/d' a.txt ## 直接删除空行 i A E F d q d M d e N f root@DESKTOP-1N42TVH:/home/test# sed -n '/^$/!p' a.txt ## 不打印空行 i A E F d q d M d e N f
3、grep删除空行
root@DESKTOP-1N42TVH:/home/test# ls a.txt root@DESKTOP-1N42TVH:/home/test# cat a.txt i A E F d q d M d e N f root@DESKTOP-1N42TVH:/home/test# cat -A a.txt i A E F$ $ d q d M$ $ $ d e N f$ root@DESKTOP-1N42TVH:/home/test# grep -v "^$" a.txt ##不匹配空行 i A E F d q d M d e N f root@DESKTOP-1N42TVH:/home/test# grep "." a.txt ##匹配有字符的行 i A E F d q d M d e N f
4、awk删除空行
root@DESKTOP-1N42TVH:/home/test# ls a.txt root@DESKTOP-1N42TVH:/home/test# cat a.txt i A E F d q d M d e N f root@DESKTOP-1N42TVH:/home/test# cat -A a.txt i A E F$ $ d q d M$ $ $ d e N f$ root@DESKTOP-1N42TVH:/home/test# awk '!/^$/' a.txt ## 不匹配空行 i A E F d q d M d e N f root@DESKTOP-1N42TVH:/home/test# awk '$0 ~ "."' a.txt ##匹配具有字符的行 i A E F d q d M d e N f root@DESKTOP-1N42TVH:/home/test# awk NF a.txt ## 不太明白 i A E F d q d M d e N f
5、tr删除空行
root@DESKTOP-1N42TVH:/home/test# ls a.txt root@DESKTOP-1N42TVH:/home/test# cat a.txt i A E F d q d M d e N f root@DESKTOP-1N42TVH:/home/test# cat -A a.txt i A E F$ $ d q d M$ $ $ d e N f$ root@DESKTOP-1N42TVH:/home/test# cat a.txt | tr -s "\n" ##将连续的换行符压缩为一个换行符 i A E F d q d M d e N f
6、调整测试数据,空行中包含有空格或者制表符
root@DESKTOP-1N42TVH:/home/test# ls a.txt root@DESKTOP-1N42TVH:/home/test# cat a.txt i A E F d q d M d e N f root@DESKTOP-1N42TVH:/home/test# cat -A a.txt ## 测试数据,空行中添加了空格和制表符 i A E F$ $ d q d M$ ^I^I$ ^I^I$ $ d e N f$ root@DESKTOP-1N42TVH:/home/test# sed -n l a.txt i A E F$ $ d q d M$ \t\t$ \t\t$ $ d e N f$
7、利用sed、grep、awk、tr删除空格
root@DESKTOP-1N42TVH:/home/test# ls a.txt root@DESKTOP-1N42TVH:/home/test# cat a.txt i A E F d q d M d e N f root@DESKTOP-1N42TVH:/home/test# cat -A a.txt i A E F$ $ d q d M$ ^I^I$ ^I^I$ $ d e N f$ root@DESKTOP-1N42TVH:/home/test# sed '/^$/d' a.txt i A E F d q d M d e N f root@DESKTOP-1N42TVH:/home/test# grep -v "^$" a.txt i A E F d q d M d e N f root@DESKTOP-1N42TVH:/home/test# awk '!/^$/' a.txt i A E F d q d M d e N f root@DESKTOP-1N42TVH:/home/test# cat a.txt | tr -s "\n" ##均不能删除包含空格或者制表符的行 i A E F d q d M d e N f
8、使用sed、awk删除包含空格或者制表符的空行
sed实现
root@DESKTOP-1N42TVH:/home/test# ls a.txt root@DESKTOP-1N42TVH:/home/test# cat a.txt i A E F d q d M d e N f root@DESKTOP-1N42TVH:/home/test# cat -A a.txt i A E F$ $ d q d M$ ^I^I$ ^I^I$ $ d e N f$ root@DESKTOP-1N42TVH:/home/test# sed '/^[\t ]*$/d' a.txt ## sed将包含行开头包含空格或者制表符的行删除 i A E F d q d M d e N f root@DESKTOP-1N42TVH:/home/test# sed '/^\s*$/d' a.txt ##\s等价于[\t] i A E F d q d M d e N f root@DESKTOP-1N42TVH:/home/test# sed -n '/^[\t ]*$/!p' a.txt ## 反向提取 i A E F d q d M d e N f
awk实现
root@DESKTOP-1N42TVH:/home/test# ls a.txt root@DESKTOP-1N42TVH:/home/test# cat a.txt i A E F d q d M d e N f root@DESKTOP-1N42TVH:/home/test# cat -A a.txt i A E F$ $ d q d M$ ^I^I$ ^I^I$ $ d e N f$ root@DESKTOP-1N42TVH:/home/test# awk '!/^[\t ]*$/' a.txt ## 反向匹配 i A E F d q d M d e N f root@DESKTOP-1N42TVH:/home/test# awk NF a.txt ##不太明白 i A E F d q d M d e N f