nixp.ru v3.0

24 января 2017,
вторник,
20:22:01 MSK

Аутсорсинг Linux с компанией «Флант»
kolen написал 16 января 2013 года в 16:39 (1006 просмотров) Ведет себя неопределенно; открыл 2 темы в форуме, оставил 4 комментария на сайте.

Очень нужна ваша помощь. Никогда не писал скриптов в bash, а тут срочно понадобилось. Никак не могу решить такую задачку.

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

пример с именами файлов

grss.gdas.19150101-19150105.dat

grss.gdas.19150106-19150110.dat

grss.gdas.19150111-19150115.dat

grss.gdas.19150116-19150120.dat

grss.gdas.19150121-19150125.dat

grss.gdas.19150126-19150130.dat

Мой скрипт

for year in {1915..1956}

do

for month in 01 02 03 04 05 06 07 08 09 10 11 12

do

fname1=’grss.gdas.’$year»$month»??-’$year»$month»??.dat'

echo $fname1

done

done

 

fhunter

Если вам нужно перебрать все файлы и что-то с ними сделать, лучше сделать вот так:

for i in grss.gdas.*-*.dat;do
    year1=`echo $i|cut -c11-14`
    month1=`echo $i|cut -c15-16`
    day1=`echo $i|cut -c 17-18`
    year2=`echo $i|cut -c20-23`
    month2=`echo $i|cut -c24-25`
    day2=`echo $i|cut -c 26-27`
    echo grss.gdas.${year1}${month1}${day1}-${year2}${month2}${day2}.dat
done


Естественно шаблон для перебора в for можете указать точнее (grss.gdas.[0-9][0-9][0-9][0-9][0-1][0-9][0-3][0-9]-[0-9][0-9][0-9][0-9][0-1][0-9][0-3][0-9].dat ).

PS. Уточните задачу. Непонятно, что вы имели в виду под «меняя дату». Возможно это решается совсем по-другому.

kolen

Все файлы имеют одинаковое имя, в котором меняется только время.

Например, первый файл grss.gdas.19150101-19150105.dat

Последний файл  grss.gdas.19560126-19150131.dat

Месяцы и годы понятно как менять, а вот дни….

fhunter

я вам написал код, который переберёт все файлы и заполнит переменные значениями времени:

year1, month1, day1 — это год, месяц, день из первой части.

year2, month2, day2 — аналогично из второй.

Как из этого собрать имя файла — я тоже показал. Дальше уже ваши действия.

kolen

Спасибо, но у меня все равно работает не так как надо. Буду разбираться дальше.

ecobeingecobeing.ru
Экология и вегетарианство на благо всем живым существам Планеты.