Ubuntu 24.04.1 LTS | Lataa ja asenna | Tutustu yhteisöön | Blogi | Yritysten tarjoamat palvelutValmistajien tukemat Ubuntu-tietokoneet: kannettavatietokone.fi uudet ja käytetyt sekä Lenovo-verkkokauppa
$ ./adif2csv.tcl call,qso_date,time_on,time_off,operator,qslmsg,dxcc trx.adi
#!/bin/sh# the next line restarts using tclsh \exec tclsh "$0" "$@"# Compatibility with Tcl 8.4# http://wiki.tcl.tk/1530if { [info procs lassign] eq "" } { proc lassign {values args} { uplevel 1 [list foreach $args [linsert $values end {}] break] lrange $values [llength $args] end }}proc readTags {data} { set tags {} set pos 0 while 1 { if { [regexp -nocase -start $pos -- \ {\<([a-z0-9_]+)(?::(\d+)(?::(\w+))?)?\>} $data \ -> tag len type] } { if { $len == "" } { set len 0 } set pos [expr { [string first ">" $data $pos] + 1 }] set pos2 [expr { $pos + $len - 1}] set tag [string tolower $tag] set value [string range $data $pos $pos2] set pos [expr { $pos2 + 1}] lappend tags $tag $value } else { break } } return $tags}proc processFile {fileName fields} { set fp [open $fileName] set data [read $fp] close $fp set skipHeader 0 if { [string index $data 0] != "<" } { set skipHeader 1 } array set tags {} foreach {tag value} [readTags $data] { if { $skipHeader } { if { $tag == "eoh" } { set skipHeader 0 } } set tags($tag) $value if { $tag == "eor" } { set values {} foreach {field} $fields { if { [info exists tags($field)] } { regsub -all -- \" $tags($field) {""} value lappend values [format {"%s"} $value] } else { lappend values {""} } } puts [join $values ","] array unset tags } }}proc main {} { global argv0 argv if { [llength $argv] != 2 } { puts stderr "Usage: $argv0 fieldname(,fieldname,...) filename" return 1 } set fields [split [lindex $argv 0] {,}] set fileName [lindex $argv 1] processFile $fileName $fields}main
Hienoa! Miten etenen tästä? Mitkä tcl paketit asennan?. Synapticissa on monta tcl-pakettia.
Miten osoitan tai haen ADIF tiedoston muunto-ohjelmaan?
ADIF kääntyy CSV:ksi.
Tuossa ADIF pätkässä on yhden radioyhteyden tiedot, siitä pitäisi poimia <call> <qso_date> <time_on> <band> <mode> <rst_sent> tarraa varten. Miten tuo onnistuu lähdekoodillasi? terveisin Timo
$ ./adif2csv.tcl call,qso_date,time_on,band,mode,rst_sent tiedosto.adif
Miten on mgronder, saanko välittää lähdekoodin linux lokiohjelmaa tekevälle kaverille liitettäväksi seuraavaan lokiohjelman versioon? (Googleta "cqrlog").
Voitko ottaa yhteyttä emaililla