this post was submitted on 23 Jan 2024
200 points (95.5% liked)

Programmer Humor

32396 readers
1646 users here now

Post funny things about programming here! (Or just rant about your favourite programming language.)

Rules:

founded 5 years ago
MODERATORS
 

Found while doing forensics on some rediscovered loose flash drives.

you are viewing a single comment's thread
view the rest of the comments
[–] [email protected] 1 points 9 months ago (1 children)

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:]]'

[–] [email protected] 2 points 9 months ago (1 children)

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.

[–] [email protected] 3 points 9 months ago* (last edited 9 months ago)

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.