在Linux中查看文件并过滤空行的多种方法
在 Linux 中查看文件内容时过滤掉空行有多种方法,以下是几种常用的方法:
方法 1:使用 grep
grep -v '^$' filename
-v:反转匹配,只显示不匹配的行'^$':表示空行的正则表达式(行首后立即为行尾)
要同时过滤掉仅含空格或制表符的行:
grep -v '^[[:space:]]*$' filename
方法 2:使用 sed
sed '/^$/d' filename
/^$/d:删除空行(d 表示 delete)
要同时过滤掉空白字符行:
sed '/^[[:space:]]*$/d' filename
方法 3:使用 awk
awk 'NF' filename
NF:表示"字段数量",当行内容为空时,NF=0,评估为假,因此不打印
显示行号:
awk 'NF {print NR, $0}' filename
方法 4:使用 cat + grep
cat -s filename | grep -v '^$'
-s:压缩连续的空白行为单行(但不会完全删除)
方法 5:使用 printf 或 echo 测试
# 测试字符串 printf "Line1\n\nLine3\n" | grep -v '^$' # 输出结果: # Line1 # Line3
高级技巧:保留格式同时过滤空行
带行号显示
grep -n '[^[:space:]]' filename | grep -v '^[[:space:]]*$'
处理多文件
grep -v '^$' file1 file2 file3
编辑文件时删除空行
# 使用 sed 原地编辑 sed -i '/^[[:space:]]*$/d' filename # 安全备份版本 sed -i.bak '/^[[:space:]]*$/d' filename
统计非空行数
grep -c '[^[:space:]]' filename
处理特殊文件
# 处理 Windows 格式文件(CRLF) grep -v $'^[[:space:]]*\r$' windows_file.txt # 处理 tab 分隔文件 awk -F'\t' 'NF > 0' tab_file.tsv
永久配置忽略空行
编辑 .bashrc 添加别名:
# 添加到 ~/.bashrc
alias nlcat="awk 'NF {print NR, \$0}'"
alias nocat="grep -v '^[[:space:]]*$'"
重新加载配置:
source ~/.bashrc
使用别名:
nocat filename # 显示无空行文件 nlcat filename # 带行号显示无空行文件
实际应用示例
假设有文件 example.txt 内容:
First line Second line with space after: Third line with tab Last line
使用高级过滤:
grep -v '^[[:space:]]*$' example.txt
输出:
First line Second line with space after: Third line with tab Last line
这些方法可以根据具体需求选择使用,grep -v '^$' 是最简单常用的方法,而 grep -v '^[[:space:]]*$' 或 awk 'NF' 则更全面,能够过滤掉所有空白行。
到此这篇关于在Linux中查看文件并过滤空行的多种方法的文章就介绍到这了,更多相关Linux查看文件并过滤空行内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
解决linux远程拷贝报错not a regular file问题
这篇文章主要介绍了解决linux远程拷贝报错not a regular file问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教2023-12-12
CentOs 7.3中搭建RabbitMQ 3.6单机多实例服务的步骤与使用
这篇文章主要给大家介绍了关于CentOs 7.3中搭建RabbitMQ 3.6单机多实例服务的步骤与使用的相关资料,文中将实现的方法介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友下面来一起看看吧。2018-03-03
Apache安装后出现服务无法启动(服务里启动出现错误代码1)
很多朋友都遇到过这样的问题Apache安装后,显示安装成功,但是出现服务无法启动服务里启动出现错误代码1,怎么解决这个问题呢,下面小编通过本文给大家详细介绍下,需要的朋友参考下吧2021-08-08


最新评论