Поскольку принятый ответ написан на языке C, я решил, что здесь можно разместить решение на Python:
# Read mask
with open('L.txt', 'r') as f:
mask = [int(line_num) for line_num in f.read().splitlines()]
# Filter input file
filtered_lines = []
with open('F.txt', 'r') as f:
for i, line in enumerate(f.read().splitlines()):
if (i+1) in mask:
filtered_lines.append(line)
# Write newly filtered file
with open('F_filtered.txt', 'w') as f:
for line in filtered_lines:
f.write('%s\n' % line)
При использовании внешней библиотеки, такой как numpy, решение выглядело бы еще более элегантно:
import numpy as np
with open('L.txt', 'r') as f:
mask = np.array([int(line_num)-1 for line_num in f.read().splitlines()])
with open('F.txt', 'r') as f:
lines = np.array(f.read().splitlines())
filtered_lines = lines[mask]
with open('F_filtered.txt', 'w') as f:
for line in filtered_lines:
f.write('%s\n' % line)
В Linux 5.6+ Используйте модуль drivetemp для чтения данных датчиков дисков с помощью инфраструктуры HWMON.
загрузите темп.модуля:
sudo modprobe drivetemp
Затем вы можете найти данные датчика в /sys/class/hwmon/hwmon */ вместе с другими датчиками
https://www.kernel.org/doc/html/latest/hwmon/drivetemp.html
Пример списка всех приводов:
grep -l "drivetemp" /sys/class/hwmon/hwmon*/name | while read f;
do printf "%s(%-.2s°C)\n" "`<${f%/*}/device/model`" "`<${f%/*}/temp1_input`";
done
Пример списка приводов по моделям:
grep -l "Lexar 256GB SSD" /sys/class/scsi_disk/*/device/model | while read f;
do printf "%s(%-.2s°C)\n" "`<${f%}`" "`<${f%/*}/hwmon/hwmon*/temp1_input`";
done
Пример получения только температуры по модели диска:
cat "$(grep -l "Lexar 256GB SSD" /sys/class/scsi_disk/*/device/model | xargs dirname)"/hwmon/hwmon*/temp1_input
Пример списка моделей привода:
cat /sys/class/scsi_disk/*/device/model