Как отобразить имена файлов, которые находятся в процессе анализа, в моем bash-скрипте? - PullRequest
0 голосов
/ 30 июня 2019

У меня есть много CSV-файлов, таких как:

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

Я использую этот скрипт:

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")                         

Для отображения такой информации, как это:

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

Но так как у меня много CSV, я не знаю, какой файл анализировать. Поэтому, когда отображается информация обо всех моих CSV, я хотел бы отобразить имя файла, которому принадлежит эта информация:

Примерно так:

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

Я видел переменную FILENAME с awk, но я не знаю, как поместить эту переменную в мой скрипт ...

Можете ли вы показать мне, как это сделать?

1 Ответ

1 голос
/ 30 июня 2019

Ваш сценарий к концу цикла while считывает параметр, который, как я полагаю, должен быть именем файла, с которым был вызван Ваш сценарий.

. Если это так, вы можетепросто измените ваш скрипт так:

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")                     
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...