[ncl-talk] Help: how to just read out one line from a big ascii file?

Mary Haley haley at ucar.edu
Wed Mar 1 12:36:47 MST 2017


Unfortunately you can't use NCL functions to just read parts of an ASCII
file.

However, you could use the UNIX "cut" command to select out the subsections
you want.  See this page for some examples:

http://www.ncl.ucar.edu/Applications/read_ascii.shtml

Use your browser search to look for the word "cut". You will find several
references.

Good luck,

--Mary


On Tue, Feb 28, 2017 at 4:58 AM, Guido Cioni <guidocioni at gmail.com> wrote:

> Just to be correct about this, but someone could step in if I'm saying
> stupid things, you HAVE to load the file into the memory (asciifile) and
> then subset with data(5:10), for example.
> If you don't want to load the entire file just cut it before reading it
> into NCL.
>
> Guido Cioni
> http://guidocioni.altervista.org
>
> On 28 Feb 2017, at 12:56, Guido Cioni <guidocioni at gmail.com> wrote:
>
> Hey Xiaofeng,
> First, I would suggest you to remove all the rows that are not supposed to
> be read by NCL (i.e. the header) beforehand, otherwise you'll get into the
> trouble. If you tell NCL to expect 2 columns of integers when there is 1 of
> string...you imagine what could result of this :) You can skip the header
> somehow, but to debug the code it's easier to have fewer complications.
>
> Second, I'm pretty sure that the asciiread procedure (which, I believe,
> you're using) does not work well with strings AND numeric values on the
> same row. If you read from the documentation (http://www.ncl.ucar.edu/
> Document/Functions/Built-in/asciiread.shtml) "For string data, each line
> of the file is read as a string"
> So the line begins as a string it would read it as a string. In order to
> read strings and values you have to read everything as string and then
> perform a conversion, as explained here (http://www.ncl.ucar.edu/
> Applications/read_ascii.shtml#pw, see Example for p
> <http://www.ncl.ucar.edu/Applications/Data/asc/istasyontablosu_son.txt>w.dat file,
> which is really similar to what you have).
>
> So I would modify your ascii file as follows (you can compute totals
> afterwards, that's what NCL is meant for):
>
> China 1,321       19.84%
> India 1,132       16.96%
> United States 304       4.56%
> Indonesia 232       3.47%
> Brazil 187       2.80%
> Pakistan 163       2.44%
> Bangladesh 159       2.38%
> Nigeria 148       2.22%
> Russia 142       2.13%
> Japan 128       1.92%
> Mexico 107       1.60%
> Philippines 89       1.33%
> Vietnam 84       1.31%
> Germany 82       1.23%
> Egypt 81       1.13%
>
> and read it as (NOT TESTED):
>
>   fname = "asc4.txt"
>   data  = *asciiread* <http://www.ncl.ucar.edu/Document/Functions/Built-in/asciiread.shtml>(fname,-1,"string")
>   population = *stringtofloat* <http://www.ncl.ucar.edu/Document/Functions/Built-in/stringtofloat.shtml>(*str_get_field* <http://www.ncl.ucar.edu/Document/Functions/Built-in/str_get_field.shtml>(data, 2," "))
>   precentage = *stringtofloat* <http://www.ncl.ucar.edu/Document/Functions/Built-in/stringtofloat.shtml>(*str_get_field* <http://www.ncl.ucar.edu/Document/Functions/Built-in/str_get_field.shtml>(data, 3," "))
>   country    = *str_get_field* <http://www.ncl.ucar.edu/Document/Functions/Built-in/str_get_field.shtml>(data, 1," ")
>
>
> Carefully read the page http://www.ncl.ucar.edu/
> Applications/read_ascii.shtml, there are a lot of examples.
>
> Cheers
>
>
> Guido Cioni
> http://guidocioni.altervista.org
>
> On 28 Feb 2017, at 12:29, Xiaofeng Li <Xiaofeng.Li at newcastle.ac.uk> wrote:
>
> <asc4.txt>
>
>
>
>
> _______________________________________________
> ncl-talk mailing list
> ncl-talk at ucar.edu
> List instructions, subscriber options, unsubscribe:
> http://mailman.ucar.edu/mailman/listinfo/ncl-talk
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mailman.ucar.edu/pipermail/ncl-talk/attachments/20170301/e9713c29/attachment.html 


More information about the ncl-talk mailing list