Измененная материнская плата теперь не будет читать жесткий диск

Как заметил @muru, проблема в том, что top использует escape-последовательности ANSI для форматирования своего вывода. Вы можете увидеть это, проложив через программу, например od, которая позволит вам видеть непечатаемые символы. Например, эта команда печатает поля «wa» и «hi» третьей строки top:

$ top -d 1 -n 1 | grep ^% | cut -d"," -f5,6

Выходной сигнал в моей системе:

1,0 wa , 0.0 hi

Давайте посмотрим на непечатаемые символы:

$ top -d 1 -n 1 | grep ^% | cut -d"," -f5,6 | od -c
0000000 033   (   B 033   [   m 033   [   3   9   ;   4   9   m 033   [
0000020   1   m           1   .   0     033   (   B 033   [   m 033   [
0000040   3   9   ;   4   9   m   w   a   , 033   (   B 033   [   m 033
0000060   [   3   9   ;   4   9   m 033   [   1   m           0   .   0
0000100     033   (   B 033   [   m 033   [   3   9   ;   4   9   m   h
0000120   i  \n
0000122

Как вы можете видеть выше, третий символ - B, и это то, re получение. Итак, предполагая, что вы хотите, чтобы скрипт: i) печатает все выходные данные top, ii) печатает поля «wa» и «hi» третьей строки и iii) печатает цифры из поля «wa», вы может сделать что-то вроде:

#!/usr/bin/env bash

x="$(top -d 1 -n 1)"
echo "$x"
waitingForHDD=$(grep ^% <<<"$x" | cut -d"," -f5,6)
echo "$waitingForHDD"     
b=$(grep -oP '^.*?\K[.\d]+(?= )' <<<"$waitingForHDD" )
echo "$b"
1
задан 17 June 2017 в 07:12

0 ответов

Другие вопросы по тегам:

Похожие вопросы: