当前位置: 代码网 > 服务器>服务器>Linux > 在Linux中查看文件并过滤空行的多种方法

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

2025年10月31日 Linux 我要评论
在 linux 中查看文件内容时过滤掉空行有多种方法,以下是几种常用的方法:方法 1:使用 grepgrep -v '^$' filename-v:反转匹配,只显示不匹配的行'^$':

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

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com