Similar a la respuesta de Roman, pero codifica menos sobre el contenido del archivo
awk -F, -v OFS=, '
NR > 1 {data[$1][$2] = $3; blocks[$2]}
END {
PROCINFO["sorted_in"] = "@ind_str_asc"
# header
printf "TimeStamp"
for (block in blocks) {
printf "%s%s", OFS, block
}
print ""
# data
for (ts in data) {
printf "%s", ts
for (block in blocks) {
printf "%s%s", OFS, data[ts][block]
}
print ""
}
}
' file
TimeStamp,data_0,data_1,data_4,date_2,date_3
04:19:12,4,6,12,8,10
04:19:14,5,6,8,,7
Tenga en cuenta que sus datos de muestra usan "datos " y "fecha " ambos.
Bash может не иметь встроенного stat
, но другие оболочки могут. Фактически, оболочка может предоставлять встроенные версии любой утилиты, которую он хочет, и пользователь может переопределить stat
своей собственной функцией оболочки или псевдонимом, вызывающим другой двоичный файл.
Нет. Утилита, которую выполняет env
, не может быть встроенной (например, попробуйте ее с cd
). Псевдонимы и функции оболочки также не допускаются.
Руководство просто пытается убедиться, что пользователь получает описанные функции. На мой взгляд, если он хочет быть действительно параноиком, он также должен упомянуть, что в идеале вы должны вызывать stat
с его абсолютным путем. Это имеет больше смысла в системах, отличных от Linux, где GNU coreutils является необязательным дополнением (часто устанавливается в / usr / local / gnu / bin
или в другом месте, либо с префиксом g
, например gstat
, gls
, gmv
и т. д.)