LINUX.ORG.RU

Grep

 , ,


0

2

Добрый день. Помогите решить задачу. date +«%T»; sudo smartctl -a /dev/sdb | grep 24[12]

Выводит в таким виде

14:04:43 241 Host_Writes_32MiB 0x0032 100 100 000 Old_age Always - 5285259 242 Host_Reads_32MiB 0x0032 100 100 000 Old_age Always - 1390099

Нужно чтобы выводилась в виде 14:09:44 5285259 1390099

Уже прочитал кучу мануалов по grep, sed, awk, но не нашел ничего подходящего чтобы выходило в нужном виде :(

Буду рад если подскажете.

Точно в таком виде, а не в виде нескольких строк? А с учётом того, что вы выражение для ″grep″ написали без символа начала стоки, то вобще не понятно сколько строк.

И не понятно, что вам надо на выходе, одна или две стоки.

mky ★★★★★
()
Ответ на: комментарий от VitaliyR

У меня всё работает:

$ echo "14:04:43 241 Host_Writes_32MiB 0x0032 100 100 000 Old_age Always - 5285259 242 Host_Reads_32MiB 0x0032 100 100 000 Old_age Always - 1390099" | awk '{print$1 " " $11 " " $21}'
14:04:43 5285259 1390099

kostik87 ★★★★★
()
Ответ на: комментарий от VitaliyR

Одна длинная командная строка:

smartctl -a /dev/sdb | awk 'BEGIN{p1="N/A";p2="N/A"}{if ($1 == "201") p1=$10; if ($1 == "202") p2=$10 }END{print  strftime("%T", systime())" "p1" " p2}'

mky ★★★★★
()
Ответ на: комментарий от VitaliyR

Опечатался, вместо 201 и 202 нужно 241 и 242:

smartctl -a /dev/sdb | awk 'BEGIN{p1="N/A";p2="N/A"}{if ($1 == "241") p1=$10; if ($1 == "242") p2=$10 }END{print  strftime("%T", systime())" "p1" " p2}'

mky ★★★★★
()
Ответ на: комментарий от mky

Спасибо всем Решил в таком виде

date +«%T»; sudo smartctl -a /dev/sdb | grep 24[12] | awk {'print $10'}

Единственно что немного не нравится что выводит столбиком (построчно), а не в 1 строку. Но это уже нюансы :)

Вывод 22:18:15 5285260 1390099

VitaliyR
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.