#!/bin/bash
#-----------------------------#
#Titolo script : splitta.sh #
#Autore : lemoeb #
#Data : MAggio 2005 #
#-----------------------------#
#Definzione delle variabili
#--------------------------
i=1; #Utilizzata per contare le righe
num_righe=`cat test.txt | wc -l`; #Numero delle righe file
commento=0; #Identifica se il carattere letto è un commento
num_file=0; #Numero progressivo sezione (nome File)
lunghezza_riga=0; #Numero di caratteri che compongono la riga
#Stampa del messaggio di avvio e informazioni generiche
#------------------------------------------------------
echo "#### SPLITTA.SH ####";
echo "--------------------";
echo "Numero delle righe presenti nel file da splittare : "$num_righe;
#Ciclo per analizzare tutte le righe del file
#--------------------------------------------
while (test $i -lt $num_righe)
do
#Recupero del primo carattere della righa e recupero della riga totale
#---------------------------------------------------------------------
primo_carattere=`cat test.txt | head -$i | tail -1 | awk '{ print substr($0,1,1) }'`;
riga_totale=`cat test.txt | head -$i | tail -1 | awk '{ print $0 }'`;
lunghezza_riga=`cat test.txt | head -$i | tail -1 | awk '{ print length($0) }'`;
#Entro nei controlli soltanto se la riga non e' vuota
#----------------------------------------------------
if test $lunghezza_riga -gt 0
then
#Controllo se il primo carattere e' un commento e se la riga precedente era di commento
#--------------------------------------------------------------------------------------
if test $primo_carattere == "#" && test $commento -eq 0
then
#Mi salvo un valore per ricordarmi che la riga precedente era di commento
#------------------------------------------------------------------------
commento=1;
#Incremento il numero del file
#-----------------------------
num_file=`expr $num_file + 1 `;
#Compongo il nome del file
#-------------------------
nome_file="sezione_"$num_file;
#creo il file
>$nome_file;
#Stampo a video la riga Totale elaborata
#---------------------------------------
echo $riga_totale;
#Se il primo carattere non e' un commento scrivo nel file appena creato
#la riga letta.
#----------------------------------------------------------------------
elif test $primo_carattere != "#"
then
#Scrittura della righa letta e settaggio del commento a 0
#--------------------------------------------------------
echo $riga_totale >> $nome_file;
commento=0;
#Se la riga letta e' di commento come la precedente allora continuo
#a scrivere sul file creato
#------------------------------------------------------------------
elif test $primo_carattere == "#" && test $commento -eq 1
then
echo $riga_totale >> $nome_file;
fi
fi
#Incremento della variabile per recuperare la riga dal file
#----------------------------------------------------------
i=`expr $i + 1`;
done