Found while doing forensics on some rediscovered loose flash drives.

  • Doc Avid Mornington@midwest.social
    link
    fedilink
    English
    arrow-up
    6
    ·
    2 年前

    first grepping some output to get the line you want and then removing the leading and trailing garbage on that line manually

    That’s not what we do, though. Give me a more concrete example, and I’ll let you know how I would expect to do it in a nix environment. I’d be curious to compare. Since I have zero experience with powershell, I am not really sure what to expect. The couple times I’ve glanced at a powershell script it looked awful, but I could be falling into Paul Graham’s blub paradox there. OK, I don’t think so, but maybe.

    • bleistift2@feddit.de
      link
      fedilink
      English
      arrow-up
      1
      ·
      2 年前

      For instance: Get the temperature of the “Composite” sensor from this output:

      $ sensors
      k10temp-pci-00c3
      Adapter: PCI adapter
      Tctl:         +37.1°C  
      
      BAT1-acpi-0
      Adapter: ACPI interface
      in0:          16.07 V  
      curr1:         1.80 A  
      
      amdgpu-pci-0500
      Adapter: PCI adapter
      vddgfx:        1.46 V  
      vddnb:       918.00 mV 
      edge:         +35.0°C  
      slowPPT:     1000.00 uW 
      
      nvme-pci-0200
      Adapter: PCI adapter
      Composite:    +28.9°C  (low  =  -5.2°C, high = +79.8°C)
                             (crit = +84.8°C)
      
      acpitz-acpi-0
      Adapter: ACPI interface
      temp1:        +37.0°C  (crit = +120.0°C)
      

      Without a cryptic awk incantation that only wizards can understand, that would be:

      sensors | grep Composite | grep -Po 'Composite:.*?C' | grep -Eo '[[:digit:]]{1,2}\.[[:digit:]]'

      • Doc Avid Mornington@midwest.social
        link
        fedilink
        English
        arrow-up
        4
        arrow-down
        1
        ·
        2 年前

        I think I misunderstood you, when you said “manually”, to mean as a human intervention in the process. What you’re showing here is an extra processing step, but I wouldn’t call that manual. Just want to clear that up, but I’m still down to play.

        Instead of three greps, you could use one sed or awk. I don’t think there’s anything particularly wizardly about awk, and it would be a lot less cryptic, to me, than this chain of greps.

        But a much better idea would be to use sensors -j to get json output, intended for machine reading, and pass that to jq. Since I don’t have the same sensors output as you, I’m not sure exactly what that would be, but I am guessing probably something like:

        sensors -j | jq '."nvme-pci-0200".Composite.composite_input'
        

        I look forward to seeing how you would do this in PS. As I said previously, I don’t know it at all, so I’m not sure what you’re comparing this to.

        • bleistift2@feddit.de
          link
          fedilink
          English
          arrow-up
          4
          arrow-down
          1
          ·
          edit-2
          2 年前

          What you’re showing here is an extra processing step, but I wouldn’t call that manual.

          Yes, it’s not manual by the dictionary definition, but it is an extra step. This is another meaning of manual in my particular bubble [Edit: that I didn’t think to specify].

          But a much better idea would be to use sensors -j to get json output, intended for machine reading, and pass that to jq.

          This is my initial point, exactly. Dealing with objects is way easier than using the ‘default’ line-wise processing. Only Powershell made that the default, while in Linux you need to hope that utilities have an option to toggle it on – and then also have jq installed to process the objects.

          I look forward to seeing how you would do this in PS. As I said previously, I don’t know it at all, so I’m not sure what you’re comparing this to.

          [Edit, since I forgot to answer your main point:] I don’t program in PS. I don’t like the verbosity. But I do think MS has a point in pushing objects as the prime unit in processing instead of lines.