• tal@lemmy.today
      link
      fedilink
      English
      arrow-up
      15
      ·
      edit-2
      18 hours ago

      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
      $
      
      • ThunderLegend@sh.itjust.works
        link
        fedilink
        English
        arrow-up
        2
        ·
        10 hours ago

        This is awesome! Looks like an LPI1 textbook. Never got the certification but I’ve seen a couple books about it and remember seeing examples like this one.

      • TechLich@lemmy.world
        link
        fedilink
        arrow-up
        9
        arrow-down
        1
        ·
        16 hours ago

        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}'

        • FooBarrington@lemmy.world
          link
          fedilink
          arrow-up
          10
          ·
          edit-2
          10 hours 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…