当前位置: 首页 > article >正文

在 Linux 中查看文件并过滤空行

在 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:使用 printfecho 测试

# 测试字符串
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 lineSecond line with space after:    Third line with tabLast 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' 则更全面,能够过滤掉所有空白行。

http://www.lryc.cn/news/2402319.html

相关文章:

  • GC1809:高性能音频接收与转换芯片
  • 项目实战——C语言扫雷游戏
  • 【Java】CopyOnWriteArrayList
  • 【JS进阶】ES6 实现继承的方式
  • mac 电脑Pycharm ImportError: No module named pip
  • C#入门学习笔记 #8(委托)
  • CSS 3D 变换中z-index失效问题
  • Vue3 中使用 i18n
  • vue:当前对象添加对应值
  • Tailwind CSS 实战:基于 Kooboo 构建 AI 对话框页面(七):消息框交互功能添加
  • JavaScript 核心原理深度解析-不停留于表面的VUE等的使用!
  • 【计算机网络】网络层IP协议与子网划分详解:从主机通信到网络设计的底层逻辑
  • 基于WSL搭建Ubnutu 20.04.6 LTS(二)-部署Docker环境
  • 【图像处理入门】6. 频域图像处理:傅里叶变换与滤波的奥秘
  • 基于开源AI智能名片链动2+1模式S2B2C商城小程序的生态农庄留存运营策略研究
  • Jenkins实现自动化部署Springboot项目到Docker容器(Jenkinsfile)
  • 【Linux】Git原理与使用
  • Cursor 工具项目构建指南: Python 3.8 环境下的 Prompt Rules 约束
  • A*算法实现原理以及实现步骤(C++)
  • Devops自动化运维---py基础篇一
  • 平安养老险蚌埠中心支公司开展金融宣教活动
  • 游戏设计模式 - 子类沙箱
  • java-springboot文件上传校验之只允许上传excel文件,且检查不能是脚本或者有害文件或可行性文件
  • openvino如何在c++中调用pytorch训练的模型
  • Redisson简明教程—你家的锁芯该换了
  • 48V带极性反接保护-差共模浪涌防护方案
  • Python----目标检测(使用YOLO 模型进行线程安全推理和流媒体源)
  • jvm学习第1day jvm简介,栈溢出、堆溢出
  • 用广告维持的免费 AI 图像生成工具(个人项目分享)
  • 分析Web3下数据保护的创新模式