памятка на лето
Fix
дневник заведен 16-07-2004
постоянные читатели [67]
adamanta, AinaM, Aljarru, aristarkh, ASA, avFeoktistov, be cool, blackberrry, Blis, casualty, EllTau, feoktistovav, Fix, Humour_Club, Jumwish, KaterinkaSn, Key, klueva, LA3APb, Lucky Star, Martin Riggs, Mostack, nedo, Nessy, Northern, NOUVEAU, OlgaF, One of us, photo, photo_tDO, pipe dreamer, Ra, Rabid, Samum, Schwarzweiss, SharaWara, simpson, sky_unltd, Stamina, Sunflower_Seed, Svetkin, Tasha Lawrens, The House Of Rock, the_Dark_One, vitacha, WILD KAT, Wild Wind, Zizzi, Астарта, Аутофоб, Безумный рыбник, Белокурая Бестия, Букля_, ванимен, Виктор, ГлЮк, Донемон, Заноза, злая птичка, ЗлЫдень, Ксю, Леля, Призовой Фонд, Счастливая Женщина, ТАРЗАНКА, Хоббит, ХонВасаби
закладки:
цитатник:
дневник:
местожительство:
Россия, Саратов
интересы [12]
компьютерные игры, фантастика, рыбалка, фото, RPG, геофизика
антиресы [3]
21-01-2009 10:24 unix
Приперли нам на переобработку данные по 3Д съемке, скинутые на DVD дампом с картриджей в формате SEGD. А такая вещь ни одним пакетом обработки не читается, потому что вообще формат SEGD - это ленточный формат, а тут еще в одном файле оказываются куча сейсмограмм и каждая со своим заголовком.
В общем, пришлось вспоминать свои старые и глубоко забытые за ненадобностью навыки скриптописания, и написать программку для разбиения таких файлов на отдельные сейсмограммки, используя стандартный файл структуры ленты .tpf

А вспоминалось очень тяжело. На отладку программки в 30 строк ушел целый день. А главное, что по tcsh в инете очень мало полезной инфы - все примеры даны для более стандартных sh, bash или же наоборот для более продвинутых zsh, perl, а синтаксис существенно разный.

Это чтобы не забылось и не потерялось - наверняка еще пригодится.


#!/bin/tcsh

#####################################
# Script for split one SEGD file, conteined few records #
# (usually dumped from tape) to separate records #
# For correct work you need additional standart .tpf file #
# whith tape structure information #
# Wrighted by Vladimir Feoktistov, Saratovneftegeofisica #
######################################

# Change work dir, input data file and .tpf file

cd /data2/Kazah
set filename = tape_1.segd.tpf
set inp_sgd = 0001.segd

set a=1
set currec=1
set st_byte=1
set e_byte=0
set size=0
set lines=`wc -l $filename | cut -d" " -f5`
@ words = $lines * 2
@ recs = $lines / 3
set tpflist = `sed "$lines p" $filename`
set outdir = (`echo $inp_sgd | cut -d"." -f1`"_sgd")
mkdir $outdir
while ( $a < $words )
@ st_byte = $st_byte + $e_byte
@ q1 = `echo $tpflist | cut -d" " -f$a`
@ a2 = $a + 1
@ q2 = `echo $tpflist | cut -d" " -f$a2`
@ a3 = $a2 + 1
@ q3 = `echo $tpflist | cut -d" " -f$a3`
@ a4 = $a3 + 1
@ q4 = `echo $tpflist | cut -d" " -f$a4`
@ size = $q1 * $q2 + $q3 * $q4
set uniname = ""
if ( $currec < 10 ) set uniname = 0
set outfile = ($outdir"/"$uniname$currec".sgd")

dd if=$inp_sgd of=$outfile bs=1 skip=$e_byte count=$size

@ currec = $currec + 1
@ e_byte = $e_byte + $size
@ a = $a + 6
end

Ваш комментарий:
Камрад:
Гость []
Комментарий:
[смайлики сайта]
Дополнительно:
Автоматическое распознавание URL
Не преобразовывать смайлики
Cкрыть комментарий
Закрыть