Reputation: 197
I have many csv files like this :
FRAME_NAME1,LPAR_NAME1,25,1.0,2
FRAME_NAME2,LPAR_NAME2,12,0.8,1
FRAME_NAME1,LPAR_NAME1,25,1.0,2
FRAME_NAME3,LPAR_NAME3,0,null,0
FRAME_NAME3,LPAR_NAME3,0,null,0
FRAME_NAME3,LPAR_NAME3,0,null,0
FRAME_NAME1,LPAR_NAME1,25,1.0,2
FRAME_NAME1,LPAR_NAME1,25,1.0,2
FRAME_NAME2,LPAR_NAME2,25,1.0,2
I use this script :
OLDIFS=$IFS
IFS=","
while read FRAME LPARS RAM CPU1 CPU2
do
if [[ $FRAME != $PREV ]]
then
PREV="$FRAME"
echo -e "\e[1;33m$FRAME \
======================\e[0m\n"
fi
echo -e "LPARS : \t$LPARS\n\
RAM : \t$RAM\n\
CPU1 : \t$CPU1\n\
CPU2 : \t$CPU2\n"
done < <(sort "$1")
To display those informations like this :
FRAME_NAME 1 =======================
LPAR_NAME : LPAR_NAME1
RAM : XXXXX
CPU 1 : XXXXX
CPU 2 : XXXXX
LPAR_NAME : LPAR_NAME1
RAM : XXXXX
CPU 1 : XXXXX
CPU 2 : XXXXX
LPAR_NAME : LPAR_NAME1
RAM : XXXXX
CPU 1 : XXXXX
CPU 2 : XXXXX
LPAR_NAME : LPAR_NAME1
RAM : XXXXX
CPU 1 : XXXXX
CPU 2 : XXXXX
FRAME_NAME 2 =======================
LPAR_NAME : LPAR_NAME2
RAM : XXXXX
CPU 1 : XXXXX
CPU 2 : XXXXX
LPAR_NAME : LPAR_NAME2
RAM : XXXXX
CPU 1 : XXXXX
CPU 2 : XXXXX
FRAME_NAME3 =======================
LPAR_NAME : LPAR_NAME3
RAM : XXXXX
CPU 1 : XXXXX
CPU 2 : XXXXX
LPAR_NAME : LPAR_NAME3
RAM : XXXXX
CPU 1 : XXXXX
CPU 2 : XXXXX
LPAR_NAME : LPAR_NAME3
RAM : XXXXX
CPU 1 : XXXXX
CPU 2 : XXXXX
But as I have many csv, I don't know which file is analyse. So when the informations of all my csv are displayed, I would like to display the name of the file to belongs thoses informations :
Something like this :
FILE : my_csv_1.csv
FRAME_NAME 1 =======================
LPAR_NAME : LPAR_NAME1
RAM : XXXXX
CPU 1 : XXXXX
CPU 2 : XXXXX
LPAR_NAME : LPAR_NAME1
RAM : XXXXX
CPU 1 : XXXXX
CPU 2 : XXXXX
LPAR_NAME : LPAR_NAME1
RAM : XXXXX
CPU 1 : XXXXX
CPU 2 : XXXXX
LPAR_NAME : LPAR_NAME1
RAM : XXXXX
CPU 1 : XXXXX
CPU 2 : XXXXX
FILE : my_csv_2.csv
FRAME_NAME 2 =======================
LPAR_NAME : LPAR_NAME2
RAM : XXXXX
CPU 1 : XXXXX
CPU 2 : XXXXX
LPAR_NAME : LPAR_NAME2
RAM : XXXXX
CPU 1 : XXXXX
CPU 2 : XXXXX
FILE : my_csv_3.csv
FRAME_NAME3 =======================
LPAR_NAME : LPAR_NAME3
RAM : XXXXX
CPU 1 : XXXXX
CPU 2 : XXXXX
LPAR_NAME : LPAR_NAME3
RAM : XXXXX
CPU 1 : XXXXX
CPU 2 : XXXXX
LPAR_NAME : LPAR_NAME3
RAM : XXXXX
CPU 1 : XXXXX
CPU 2 : XXXXX
I have seen the FILENAME variable with awk, but I don't know how to put this variable on my script...
Can you show me how to do this ?
Upvotes: 0
Views: 100
Reputation: 51593
Your script by the end of the while
loop reads from a parameter that is $1
that I assume has to be the file name with which Your script got called.
If so, You can just modify Your script to be like:
OLDIFS=$IFS
IFS=","
echo -e "FILENAME : $1\n"
while read FRAME LPARS RAM CPU1 CPU2
do
if [[ $FRAME != $PREV ]]
then
PREV="$FRAME"
echo -e "\e[1;33m$FRAME \
======================\e[0m\n"
fi
echo -e "LPARS : \t$LPARS\n\
RAM : \t$RAM\n\
CPU1 : \t$CPU1\n\
CPU2 : \t$CPU2\n"
done < <(sort "$1")
Upvotes: 1