Это не красиво (или просто), но делает то, что вы просите:
cat sam.awk
/Alias name:/ {
count=0
l=length($3);
printf "%s ", $3
}
/Valid from:/ {
count++;
gsub(/Valid from:/, "\\t");
gsub(/until:/, "\\t");
space=0
if(count!=1) {
space=l-4
printf "{empty}"
};
printf " %*s %s %s %s %s %s %s %s %s %s %s %s %s\n",space,$1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13,$14,$15
}
Поскольку у меня нет jsk-файлов для воспроизведения, я принял ваш фактический вывод в качестве входных данных для своих экспериментов (чтобы эмулировать вывод нескольких файлов, я продублировал одну запись и изменил имя хоста):
cat sam
Alias name: somehostname.com
Valid from: Wed Mar 01 00:00:00 GMT 2019 until: Wed Mar 01 00:00:00 GMT 2022
Valid from: Wed Mar 01 00:00:00 GMT 2019 until: Wed Mar 01 00:00:00 GMT 2022
Valid from: Wed Mar 01 00:00:00 GMT 2019 until: Wed Mar 01 00:00:00 GMT 2022
Alias name: hostname.com
Valid from: Wed Mar 01 00:00:00 GMT 2019 until: Wed Mar 01 00:00:00 GMT 2022
Valid from: Wed Mar 01 00:00:00 GMT 2019 until: Wed Mar 01 00:00:00 GMT 2022
Valid from: Wed Mar 01 00:00:00 GMT 2019 until: Wed Mar 01 00:00:00 GMT 2022
Вызванный так awk -f sam.awk sam
дает следующее:
awk -f sam.awk sam
somehostname.com \t Wed Mar 01 00:00:00 GMT 2019 \t Wed Mar 01 00:00:00 GMT
{empty} \t Wed Mar 01 00:00:00 GMT 2019 \t Wed Mar 01 00:00:00 GMT
{empty} \t Wed Mar 01 00:00:00 GMT 2019 \t Wed Mar 01 00:00:00 GMT
hostname.com \t Wed Mar 01 00:00:00 GMT 2019 \t Wed Mar 01 00:00:00 GMT
{empty} \t Wed Mar 01 00:00:00 GMT 2019 \t Wed Mar 01 00:00:00 GMT
{empty} \t Wed Mar 01 00:00:00 GMT 2019 \t Wed Mar 01 00:00:00 GMT