Мне нужен скрипт для преобразования этого списка праздников в формат даты. Мой входной файл
MMYYYY CAL_B2K_ID 123456789012345678901234567890
------ ------------ -------------------------------
012016 821 YY Y Y Y Y
012016 DC YY Y Y Y Y
022016 DC Y Y Y Y
022016 821 Y Y Y Y
032016 DC Y Y Y Y
032016 821 Y Y Y Y
042016 821 Y Y Y Y
Теперь 123456789012345678901234567890 похож на дату, когда впервые приходит 0, это 10, а затем 1 означает 11, и это так. ...
1 2 3 4 5 6 7 8 9 10 11 12 13 14............
Итак, я создал сценарий, где всегда присутствует Y, он конвертируется в дату, предположим, что в первой строке Y присутствует под 1, 2,9,6,3,9
В моем сценарии я вырезал каждую строку из столбца 21-52 и проверяя, является ли этот столбец Y, если да, то он скрывается в дате, например, если Y присутствует в столбце номер 23. Затем я вычитаю (номер столбца - 20), он дает мне 3 А затем я использую оператор concat для создания даты.
Ниже мой сценарий.Но я сталкиваюсь с проблемой, когда нет Y ни под одним столбцом, он принимает мой var как пустой, а blank также попадает в истинное состояние.
var=echo $f1 | cut -c$i
if [[ "$var"='Y' ]] ;
А мой сценарий ниже.
rm f1.txt
set -x
while read f1
do
for((i=21;i<23;i++));
do
var=`echo $f1 | cut -c$i`
if [[ "$var"='Y' ]] ;
then
echo $var
month=`echo $f1 | cut -c1-2`
year=`echo $f1 |cut -c3-6`
date=$(($i-20))
echo $year"-"$month"-"$date >> f1.txt
fi
done
done < holiday_india.txt`
Пожалуйста, дайте мне знать, что я буду делать, чтобы, когда в var ничего нет, он не попадал под условие If.
Отличие этого скрипта состоит в том, что он преобразует весь столбец каждой строки с 21 по 52 в дату, а не там, где присутствует Y.
Надеюсь, теперь я проясню.