Quote:
Originally Posted by
wisecracker
@ Don...
Each element in the pseudo-array will be a ASCII number from 0 to 255 decimal the value of an 8 bit byte, (so therefore 1 to 3 characters long); a simple audio sample.
(However it could be a 2 byte word from 0 to 65535 decimal, depends how I feel; a more accurate sample if I decide.)
I used newlines as an element separator in one of my examples but any IFS value would probably be OK by me...
You mention ed and I have never, ever used it and I like the idea you put forwards so man page and www it is to see the possibiities.
Is there a limit to POSIX's number of variables, or is that limited to available real memory and element sizes?
... ... ...
If you're used to using
vi you've been using
ed for as long as you've been using
vi; you just didn't know it. And, by the way, everything I say about
ed in the rest of this note also applies to the
ex utility. I usually use
ed instead of
ex because
ed is usually smaller than
ex, and, therefore, loads faster. There are a few small differences between
ed and
ex, but none of them apply to the examples used in the following discussion.
In
vi when you hit escape (to exit text append mode) and issue a command that starts with a <colon>, everything you enter after the colon is an
ed command.
For example the
vi the
:w filename command writes the current contents of the editing buffer to the file named
filename. In
ed the command
w filename writes the current contents of the editing buffer to the file named
filename.
In
vi the command
:100s/.*/123/ will change the contents of line 100 in the editing buffer to the string "123". In
ed the command
100s/.*/123/ will change the contents of line 100 in the editing buffer to the string "123".
In
vi the command
:100,200g/^.$/s/^/0/ followed by the command
:100,200g/^..$/s/^/0/ will add leading zero characters on any of lines 100 through 200 of your editing buffer that had only one or two characters to have three characters on those lines with leading zero fill. In
ed the command
100,200g/^.$/s/^/0/ followed by the command
100,200g/^..$/s/^/0/ will add leading zero characters on any of lines 100 through 200 of your editing buffer that had only one or two characters to have three characters on those lines with leading zero fill.
According to POSIX, the number of variables you can have in the shell and the length of values assigned to those variables is limited by the amount of physical memory available to the shell and the address space available to the shell in its addressable data space. The length of lines in
ed is further restricted because the behavior of
ed is only defined if the file you are editing is a text file and the standard says that a file is not a text file if it contains a line containing more than LINE_MAX bytes (including the terminating <newline> character) and implementations are required to set the implementation's LINE_MAX configuration limit to a value no smaller than 2048.
Cheers,
Don