在Linux中查看文件并过滤空行的多种方法

 更新时间:2025年10月29日 10:15:16   作者:会飞的土拨鼠呀  
这篇文章主要介绍了在Linux中查看文件并过滤空行的多种方法,包括使用grep、sed、awk等工具,这些方法可以根据具体需求选择使用,其中grep是最简单常用的方法,下面小编为大家详细说说,需要的朋友可以参考下

在 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查看文件并过滤空行内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • centos7 esxi6.7模板实际应用详解

    centos7 esxi6.7模板实际应用详解

    这篇文章主要介绍了centos7 esxi6.7模板实际应用详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-01-01
  • 解决linux远程拷贝报错not a regular file问题

    解决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单机多实例服务的步骤与使用

    这篇文章主要给大家介绍了关于CentOs 7.3中搭建RabbitMQ 3.6单机多实例服务的步骤与使用的相关资料,文中将实现的方法介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友下面来一起看看吧。
    2018-03-03
  • Linux中切换用户出现bash-4.2$问题解决

    Linux中切换用户出现bash-4.2$问题解决

    这篇文章主要给大家介绍了关于Linux中切换用户出现bash-4.2$问题解决的相关资料,我们需要进行一个复盘,只有发生问题,才能尝试着去解决问题,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2023-11-11
  • 解决CentOS7下yum失效问题

    解决CentOS7下yum失效问题

    CentOS 7正式结束生命周期(EOL),官方也终止了所有支持,但我们服务用的都是CentOS7 ,也不会轻易升级,这一问题如何解决呢,下面小编就来和大家详细讲讲
    2025-06-06
  • 基于gentoo安装Nginx php mysql的方法

    基于gentoo安装Nginx php mysql的方法

    新买的VPS。在上面部署了nginx mysql php。需要的朋友可以参考下。
    2011-05-05
  • 在Linux服务器上安装 memcached的基本操作

    在Linux服务器上安装 memcached的基本操作

    本文分步骤给大家详细介绍了linux服务器上安装memcached的操作方法,非常不错,需要的朋友参考下吧
    2016-12-12
  • Apache安装后出现服务无法启动(服务里启动出现错误代码1)

    Apache安装后出现服务无法启动(服务里启动出现错误代码1)

    很多朋友都遇到过这样的问题Apache安装后,显示安装成功,但是出现服务无法启动服务里启动出现错误代码1,怎么解决这个问题呢,下面小编通过本文给大家详细介绍下,需要的朋友参考下吧
    2021-08-08
  • 如何把win10的D盘挂载到linux电脑的目录下

    如何把win10的D盘挂载到linux电脑的目录下

    这篇文章主要介绍了如何把win10的D盘挂载到linux电脑的目录下的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-07-07
  • linux下使用cmake编译安装mysql的详细教程

    linux下使用cmake编译安装mysql的详细教程

    这篇文章主要介绍了linux下使用cmake编译安装mysql的详细教程,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-10-10

最新评论