comp.lang.idl-pvwave archive
Messages from Usenet group comp.lang.idl-pvwave, compiled by Paulo Penteado

Home » Public Forums » archive » Re: Cut down a big file (W/O delimiters) into several... but I still don't understand
Show: Today's Messages :: Show Polls :: Message Navigator
E-mail to friend 
Switch to threaded view of this topic Create a new topic Submit Reply
Re: Cut down a big file (W/O delimiters) into several... but I still don't understand [message #53119] Tue, 20 March 2007 03:00
R.Bauer is currently offline  R.Bauer
Messages: 1424
Registered: November 1998
Senior Member
Hi Callahan

Did you thought on using head and tail for that e.g.

head n -100 file > newfile


or you can use a simple idl program
which does read partial a whole array of e.g.

tmp = make_array(28,100,/long)
openr,lun1,file,/get_lun
for i = 0,1 do begin
readf,lun1,tmp
openw,lun2,file+strtrim(i,2),transpose(tmp),/get_lun,width=2 8*12
printf,lun2,tmp
free_lun,lun2
endfor
free_lun,lun1

cheers
Reimar



DirtyHarry wrote:
> Last week I posted a question with almost same topic. I would like to
> slice a big file into several accoding to one of its row. I found
> there is some 'delimiter' problem that I cannot solve at this point.
> So I deleted them through making another simple IDL code and made a
> new data file, but still I got stuck in cutting it down.
>
> This is a part of my data file.
> file: 'HumNWS1.txt' (data(28, 164094))
>
> 90 2000 1 1 95 95 95 95 95 96 95 95 94 93
> 93 93 94 94 94 95 95 93 91 90 94 95 96 95
> 90 2000 1 2 96 95 94 96 93 93 76 74 76 81
> 85 84 76 53 43 40 39 41 33 33 32 32 33 35
> 90 2000 1 3 35 34 38 35 29 28 30 29 26 23
> 25 22 22 30 29 24 23 24 36 31 34 39 31 34
> .
> .
> .
>
>
> To divide this, I set up a source code like this...
>
>
> ------------------------------------
> pro hum_year
>
> ;
> ************************************************************ ***********************
>
> ; 1. Read file and set the initial value of variables and arrays.
> file = 'HumNWS1.txt'
> ndata=file_lines(file)
> data=intarr(28, ndata)
>
> close, /all
>
> ; 2. Prepare for new text files.
> openw,1,'HuNWS_2000.txt'
> openw,2,'HuNWS_2001.txt'
> openw,3,'HuNWS_2002.txt'
> openw,4,'HuNWS_2003.txt'
> openw,5,'HuNWS_2004.txt'
> openw,6,'HuNWS_2005.txt'
>
>
> ; 3. Read data and write them on the desgnated files.
>
> for t=0L,ndata-1 do begin
> case data(1L,t) of
> 2000:printf,1,format='(28i6)' , data[*,t]
> 2001:printf,2,format='(28i6)' , data[*,t]
> 2002:printf,3,format='(28i6)' , data[*,t]
> 2003:printf,4,format='(28i6)' , data[*,t]
> 2004:printf,5,format='(28i6)' , data[*,t]
> 2005:printf,6,format='(28i6)' , data[*,t]
> else:
> endcase
> endfor
>
> ; 4. close all files.
> close, /all
>
> print, 'Process is done!'
>
> end
> ----------------------------
> There was no problem in compiling. When I ran this file after
> compilation, there were no error messages, either. However, after I
> checked those new files (i.e. 'HuNWS_2000.txt'), I found there were no
> data in there... I don't understand why this happens. What's wrong in
> my case statement... ? Please give me some suggestions... thanks.
>


--
Reimar Bauer

Institut fuer Stratosphaerische Chemie (ICG-1)
Forschungszentrum Juelich
email: R.Bauer@fz-juelich.de
------------------------------------------------------------ -------
a IDL library at ForschungsZentrum Juelich
http://www.fz-juelich.de/icg/icg-i/idl_icglib/idl_lib_intro. html
============================================================ =======
Re: Cut down a big file (W/O delimiters) into several... but I still don't understand [message #53120 is a reply to message #53119] Tue, 20 March 2007 02:16 Go to previous message
Nigel Wade is currently offline  Nigel Wade
Messages: 286
Registered: March 1998
Senior Member
DirtyHarry wrote:

> Last week I posted a question with almost same topic. I would like to
> slice a big file into several accoding to one of its row. I found
> there is some 'delimiter' problem that I cannot solve at this point.
> So I deleted them through making another simple IDL code and made a
> new data file, but still I got stuck in cutting it down.
>
> This is a part of my data file.
> file: 'HumNWS1.txt' (data(28, 164094))
>
> 90 2000 1 1 95 95 95 95 95 96 95 95 94 93
> 93 93 94 94 94 95 95 93 91 90 94 95 96 95
> 90 2000 1 2 96 95 94 96 93 93 76 74 76 81
> 85 84 76 53 43 40 39 41 33 33 32 32 33 35
> 90 2000 1 3 35 34 38 35 29 28 30 29 26 23
> 25 22 22 30 29 24 23 24 36 31 34 39 31 34
> .
> .
> .
>
>
> To divide this, I set up a source code like this...
>
>
> ------------------------------------
> pro hum_year
>
> ;
>
************************************************************ ***********************
>
> ; 1. Read file and set the initial value of variables and arrays.
> file = 'HumNWS1.txt'
> ndata=file_lines(file)
> data=intarr(28, ndata)
>
> close, /all
>
> ; 2. Prepare for new text files.
> openw,1,'HuNWS_2000.txt'
> openw,2,'HuNWS_2001.txt'
> openw,3,'HuNWS_2002.txt'
> openw,4,'HuNWS_2003.txt'
> openw,5,'HuNWS_2004.txt'
> openw,6,'HuNWS_2005.txt'
>
>
> ; 3. Read data and write them on the desgnated files.
>
> for t=0L,ndata-1 do begin
> case data(1L,t) of
> 2000:printf,1,format='(28i6)' , data[*,t]
> 2001:printf,2,format='(28i6)' , data[*,t]
> 2002:printf,3,format='(28i6)' , data[*,t]
> 2003:printf,4,format='(28i6)' , data[*,t]
> 2004:printf,5,format='(28i6)' , data[*,t]
> 2005:printf,6,format='(28i6)' , data[*,t]
> else:
> endcase
> endfor
>
> ; 4. close all files.
> close, /all
>
> print, 'Process is done!'
>
> end
> ----------------------------
> There was no problem in compiling. When I ran this file after
> compilation, there were no error messages, either. However, after I
> checked those new files (i.e. 'HuNWS_2000.txt'), I found there were no
> data in there... I don't understand why this happens. What's wrong in
> my case statement... ? Please give me some suggestions... thanks.


Nowhere in that code do you read the data from the file.

It helps if you do that, so that the data() array actually has some contents.

--
Nigel Wade, System Administrator, Space Plasma Physics Group,
University of Leicester, Leicester, LE1 7RH, UK
E-mail : nmw@ion.le.ac.uk
Phone : +44 (0)116 2523548, Fax : +44 (0)116 2523555
  Switch to threaded view of this topic Create a new topic Submit Reply
Previous Topic: Re: random musings
Next Topic: Widget Tree Insensitivity / Dialog Box

-=] Back to Top [=-
[ Syndicate this forum (XML) ] [ RSS ] [ PDF ]

Current Time: Wed Oct 08 19:12:41 PDT 2025

Total time taken to generate the page: 0.00593 seconds