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