Следующий скрипт сделает это за вас:
#!/bin/bash
> out.txt
while read line; do
mytmp=$(echo $line | sed 's/.bil$//' | sed 's/^2011//' )
echo $mytmp
if [ $mytmp -lt 31 ]; then
MONTH=08
DAY=$(( $mytmp + 1))
elif [ $mytmp -lt 61 ]; then
MONTH=09
DAY=$(( $mytmp - 30 ))
elif [ $mytmp -lt 92 ]; then
MONTH=10
DAY=$(( $mytmp - 60 ))
elif [ $mytmp -lt 122 ]; then
MONTH=11
DAY=$(( $mytmp - 91 ))
elif [ $mytmp -lt 153 ]; then
MONTH=12
DAY=$(( $mytmp -121 ))
fi
echo "2011$MONTH$DAY.bil" >> out.txt
done < data
Он работает следующим образом: он читает строку с именем data, строка за строкой, и помещает вывод в файл с именем out.txt (измените его так, как вам больше подходит). Первая строка очищает выходной файл, а затем считывает файл данных, удаляя строку начального 2011 года и конечного .bil. Осталось день кодирования. Затем, в зависимости от кодирования дня, он определяет соответствующий месяц и день и восстанавливает строку, предварительно ожидая 2011 года, добавляя .bil и помещая окончательную строку в файл output.txt.