У меня много данных в форматах .grd и .txt, например:

20121201.grd
20121202.grd
..
..
..
201121231.grd

а также:

Result.2012.1201.txt
Result.2012.1202.txt

::
::
Result.2012.12.31.txt

Я уже пытался использовать приведенную ниже команду для сопоставления между данными .grd и данными .txt. Я также помещаю данные .grd и .txt в одну и ту же папку.

for n in *.txt
   do echo "processing $n"
   grdtrack "${n%.*}.txt" -G2012*.grd > "${n%.*}h.txt"
done

Но, к сожалению, команда не работает.

Это результат:

processing Result.2012.1205.txt
grdtrack: Could not find file [2012*.grd]

Есть кто-нибудь, кто может мне помочь?

1 ответ1

0

Немного неясно, что вы пытаетесь сделать (например, пытаетесь ли вы обрабатывать файлы в формате 2012.mm.dd или 2012.mmdd? (Вы оба перечислили).

Вы можете "вырезать" строку в bash, используя {$ n:x:y}, где x - начальная позиция, а y - количество символов, поэтому что-то вроде этого [с настройками для вашего случая использования] должно работать:

for n in *.txt 
do
    echo "Processing $n"
     grdtrack $n -G{$n:0:4}{$n:5:4}.grd > {$n}h.txt
done

Это обработает текстовые файлы и проанализирует параметр -G20121202.grd, перенаправив вывод в новый текстовый файл.

Смотрите здесь для получения дополнительной информации о работе со строками в bash.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .