you are viewing a single comment's thread
view the rest of the comments
[–] 16 points 1 year ago* (5 children)
  • [–] 16 points 1 year ago* (last edited 1 year ago) (4 children)

    To be fair, a lot of the programs don't use a single character, have multiple spaces between fields, and cut doesn't collapse whitespace characters, so you probably want something more like tr -s " "|cut -d" " -f3 if you want behavior like awk's field-splitting.

    $ iostat |grep ^nvme0n1
    nvme0n1          29.03       131.52       535.59       730.72    2760247   11240665   15336056
    $ iostat |grep ^nvme0n1|awk '{print $3}'
    131.38
    $ iostat |grep ^nvme0n1|tr -s " "|cut -d" " -f3
    131.14
    $
    
  • source
  • parent
  • hideshow 4 child comments
  • [–] 8 points 1 year ago (1 child)

    I never understood why so many bash scripts pipe grep to awk when regex is one of its main strengths.

    Like... Why

    grep ^nvme0n1 | awk '{print $3}'

    over just

    awk '/^nvme0n1/ {print $3}'

  • source
  • parent
  • hideshow 1 child comment
  • [–] 12 points 1 year ago* (last edited 1 year ago)

    Because by the time I use awk again, I've completely forgotten that it supports this stuff, and the discoverability is horrendous.

    Though I'd happily fix it if ShellCheck warned against this...

  • source
  • parent