前几天有个工作上的需求,上游把数据从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