shell清除文件末尾所有空行

前几天有个工作上的需求,上游把数据从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 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值