Siempre es posible cocinar algo para el procesamiento de texto con AWK o Perl, y por supuesto Python, que es lo que proporciona esta respuesta.
Como one-liner:
python -c 'import sys;print "Filename\tStatus\tTimestamp"; lines=[l.strip() for l in sys.stdin];print "".join([l+"\n" if i%3 == 0 else l+"\t" for i,l in enumerate(lines,1) ])' < input.txt
Como secuencia de comandos de varias líneas
import sys
print "Filename\tStatus\tTimestamp"
lines=[l.strip() for l in sys.stdin]
print "".join([l+"\n" if i%3 == 0 else l+"\t" for i,l in enumerate(lines,1) ])
La idea básica aquí es proporcionar la entrada del script a través de stdin (usando la redirección de shell <
, aunque también se puede usar una tubería). El script usa pestañas para separar los campos, aunque los espacios también podrían usarse para una salida más "afinada".
Salida de muestra utilizando el ejemplo de entrada proporcionado por OP:
$ python -c 'import sys;print "Filename\tStatus\tTimestamp";
> lines=[l.strip() for l in sys.stdin];
> print "".join([l+"\n" if i%3 == 0 else l+"\t" for i,l in enumerate(lines,1) ])' < input.txt
Filename Status Timestamp
abc.txt errorstatus1 Fri Nov 11 02:00:09 2016
def.txt errorstatus2 Sat Nov 12 03:00:09 2016
Sergiy Kolodyazhnyy
fuente
abc.txt,errorstatus1,Fri Nov 11 02:00:09 2016
. Edité su pregunta para que coincida con lo que dice con el ejemplo que proporcionó. Siéntase libre de retroceder, pero tenga en cuenta que realmente necesita aclarar qué es exactamente lo que quiere: valores en columnas o valores separados por comas