On Mon, Jan 05, 2009 at 12:14:25PM EST, Bob Proulx wrote: > Chris Jones wrote:
[..] > If you wish to be kind to people using random text editors then it > would be nice to shorten those marker comment lines by at least one > character so that they do not wrap around terminals. Some editors put > a line wrap indicator in the last column indicating that the line > displayed is wrapped to the next line. I normally use the default tw=72 that is set in my .vimrc .. but, I was so fussed up by my attempts to make this little script work and awk's sometimes quirky syntax that I found myself constantly wrapping to the next line and decided to set it manually to something larger so I could focus on the coding never thinking I would later need to post it and ask for assistance .. And there it comes back to bite me .. > Also, as long as I am whining (:-) using eight columns for a single > indention level is alot of whitespace! Of course this is personal > preference and a bike shed discussion but still... Thanks, I have set tabstop.. etc. to 2 instead of 4 in my .vimrc.. The reason it looked like I was using an indentation of 8 is that I had removed some lines while trying to make it work: In particular I had deleted the "while line" and naturally forgot to .. "disindent" what followed. > > I have tried numerous things with while .. getfile .. restructuring the > > above, adding a BEGIN section .. and gotten nowhere. > > Try my modification of your program. I used getline to read the file. > > #!/usr/bin/gawk -f > BEGIN { > while (getline < "/proc/meminfo") { > if ($1=="MemTotal:") {mt = $2}; # mt = total ram on system > if ($1=="MemFree:") {mf = $2}; # mf = free ram > if ($1=="Buffers:") {mb = $2}; # mb = ram used for buffers > if ($1=="Cached:") {mc = $2}; # mc = ram used for cache > if ($1=="SwapTotal:") {st = $2}; # st = total swap > if ($1=="SwapFree:") {sf = $2}; # sf = free swap > } > exit; > } > END { > pmu = (mt-(mf+mb+mc)) * 100 / mt; # pmu = % of ram used > psu = ((st-sf) * 100 / st); # psu = % of swap used > printf ("%2.1f %s %2.1f %s\n"), pmu, "%", psu, "%"; > } This is in essence identical to my first attempt .. but since I didn't save earlier versions, I'll never know why mine was hanging .. looked like it was waiting for some input from the keyboard, now I come to think of it.. should have entered something/anything .. maybe it would have reacted and that might have been enough to push me in the right direction. The main differences that I can see now is that I was missing the commas at the end of each line .. will have to check what they're for since awk wasn't complaining .. and I also found some trailing spaces before the EOL. And all the time, I was looking for a structural flaw.. something in awk's processing logic that I misunderstood.. I should have looked more closely at what vim's color syntax highlighting was telling me.. :-) Thanks for your help! CJ