前几天有个工作上的需求,上游把数据从excel转csv,这样发给我们的数据就有一大堆的空行,当发现第一个空行之后,后面的所有行都是空行,所以写了一份代码进行校验
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} if [ $line_length_100 -le 3 ]; then #若空行不存在,则会删除最后一行的下一行,即不存在的行 sed -i ${line_space}',$d' $dir break; fi done break fi done echo "${dir}文件总行数为:"$line_count",现在为:"`awk 'END{print NR}' $dir` #检测文件末尾是否为空行,如果是,则删除文件最后一行 filetail=$(tail -n 1 $dir) tailcount=${#filetail} if [ $tailcount -le 2 ]; then echo $dir echo "清除文件末尾空行" sed -i '$d' $dir fi done