awk question
Quartz
quartz at sneakertech.com
Mon Oct 5 03:30:51 UTC 2015
On Oct 4 8:48 PM, William A. Mahaffey III wrote:
>
>
> I am using awk & smartctl in a small shell script to print out HDD temps
> in a purty format, 1 line per drive. As it happens, the output I want is
> spread out over 4 lines of smartctl out, requiring (I *think*) 4 calls
> to smartctl each piped to its own awk invocation to pull out the line I
> want & print its info out. Is there some way to get awk to consider more
> than 1 line at a time ? In my case my 4 lines are indeed sequential, &
> it would be a bit more efficient if I could process all 4 lines once I
> found the 1st one. This is definitely *not* critical, what I have now
> works AOK, I was/am just curious if it could be optimized a bit. TIA &
> have a good one.
Awk already handles multiple lines just fine, so you're looking for
something else but don't know how to articulate it.
Considering you're referring to 'pulling out lines', maybe you want to
trap the output of smartctl into a variable, then just echo that to grep
a bunch of times, before awk?
ie;
x=$(smartctl)
echo "$x" | grep 'foo' | awk '{print $1}'
echo "$x" | grep 'bar' | awk '{print $2}'
echo "$x" | grep 'baz' | awk '{print $3}'
...etc?
Although depending on what exactly you want to pull from the smartctl
output, you can probably just do it all from awk in one incantation. Awk
scripts can be fairly powerful.
More information about the freebsd-questions
mailing list