LINUX.ORG.RU

awk, выполнение «команды в команде»

 


0

1

Входные данные - 3 столбца. Первые 2 на выхлопе загоняются в рамки <td></td>, а последний надо тоже загнать в рамки <td></td>, но дополнительно преобразовать его значение в часы:минуты:секунды. Вот чего добился:

# echo 1 2 250 | awk '{system("date -u +%H:%M:%S " "-d@"$3)} {print "<tr><td>"$1,"</td><td>"$2,"</td><td>"$3"</td></tr>"}'
00:04:10
<tr><td>1 </td><td>2 </td><td>250</td></tr>
А хочу на выхлопе:
<tr><td>1 </td><td>2 </td><td>00:04:10</td></tr>

Знатоки awk, подскажите пожалуйста. Спасибо.

echo 1 2 250 | awk '{printf("|%s|%s|%s|\n",$1,$2,strftime("%T",$3,1))}'

ну или в твоём скрипте

echo 1 2 250 | awk '{system("date -u +%H:%M:%S " "-d@"$3)} {print "<tr><td>"$1,"</td><td>"$2,"</td><td>"strftime("%T",$3,1),"</td></tr>"}'
Perspective
()
Последнее исправление: Perspective (всего исправлений: 3)
Ответ на: комментарий от Dimarius

Можно сократить до:

Запятые тоже не нужны.

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