shell清除文件末尾所有空行

在处理从Excel转成CSV的数据时,遇到文件末尾存在大量空行的问题,通过Shell脚本实现高效清理。逻辑包括遍历.txt文件,每100行检查一次,一旦发现空行则删除其后所有空行直至文件末尾,避免处理时出错。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前几天有个工作上的需求,上游把数据从excel转csv,这样发给我们的数据有些时候就有一大堆的空行

文件内容大概是这样的:

这是第一条内容

这是第二条内容

...

...

[空行]

[空行]

[空行]

...

我们在处理数据的时候,如此多的空行会使得代码报错,所以直接在shell里进行处理,将空行删掉

文件特点:当发现第一个空行之后,后面的所有行都是空行,所以写了一份代码进行校验

逻辑:

1.遍历文件夹下所有的.txt文件

2.每隔100行检测一次当前行是否为空行(加快效率,毕竟有时候一份文件是好几十万行)

3.检测到第一个空行之后回退到前100行,然后逐行检测空行,检测到后删除该行以后所有行直至末尾

其实有了思路,代码就不那么重要了,以下是代码

for dir in $(ls *.txt)
do
	line_now=1
	line_count=$(awk 'END{print NR}' $dir)
	for i in `seq 1 $line_count`
	do
		line_now=`expr $line_now + 100`
		line_content=`sed -n ''${line_now}'p' $dir`
		line_length=${#line_content}
		#第一次检测到空行
		if [ $line_length -le 3 ]; then
			echo "----------正在对文件进行去空行处理"
			line_sea=`expr $line_now - 100`
		#遍历这100行当中的空行
			for line_space in `seq $line_sea $line_now`
			do
				line_content_100=`sed -n ''${line_space}'' $dir`
				line_length_100=${#line_content_100}
			
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值