On Thu, Oct 30, 2008 at 7:14 PM, Oliver Fromme <[EMAIL PROTECTED]> wrote: > Eduardo Meyer wrote: > > Oliver Fromme wrote: > > > Eduardo Meyer wrote: > > > > I need to write a cgi script which will print the output from ps(1) in > > > > a table (html), so the average-operator can click on a KILL link and > > > > Thank you all. I didnt mention the language, yes, I wanted it with > > shell script. Sadly, no idea was completly enough, for the default ps > > output it simple has no pattern. No multiple-pattern would do the job > > safely. > > Did you actually read my suggestion? I explained that you > cannot cut by pattern, but that you need to cut on field > widths according to the header line.
Yes, sure I did. This is why I replied agreeing with you. However, it was not enough, I had to format the header so I was sure the pattern would not fail. > > Here's a solution that implements that, using awk to do > the parsing: > > #!/bin/sh - > > ps -axww -o pid -o user -o emul -o lstart -o lockname -o stat -o command | > awk '{ > if (NR == 1) { > # Parse header line. > # Build arrays fstart[] and fwidth[]. > numfields = split(" " $0, field, / [^ ]/) - 1 > fwidth[1] = length(field[1] field[2]) + 2 > fstart[1] = 1 > for (i = 2; i <= numfields; i++) { > fwidth[i] = length(field[i + 1]) + 2 > fstart[i] = fstart[i - 1] + fwidth[i - 1] > } > fwidth[numfields] = 100 > } > else { > # Parse data line. > print "<tr>" > for (i = 1; i <= numfields; i++) { > content = substr($0, fstart[i], fwidth[i]) > print " <td>" content "</td>" > } > print "</tr>" > } > }' > > Of course that's just an example. You still have to > produce "<table>" and other surrounding HTML, of course. > > Best regards > Oliver Thank you :) I will use it as a template. -- =========== Eduardo Meyer pessoal: [EMAIL PROTECTED] profissional: [EMAIL PROTECTED] _______________________________________________ freebsd-stable@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-stable To unsubscribe, send any mail to "[EMAIL PROTECTED]"