Como inserir uma primeira coluna em muitos arquivos + como converter a hora unix para a hora normal

2

Existem muitos arquivos em um diretório que tem e.x .: o seguinte conteúdo:

ENTRADA:

root    1324711901
sshd    1272725792

Estou procurando uma solução para converter o conteúdo dos arquivos para isso:

OUTPUT1:

filenameXXX.txt root    1324711901
filenameXXX.txt sshd    1272725792

OUTPUT2:

filenameXXX.txt root    Sat Dec 24 08:31:41 CET 2011
filenameXXX.txt sshd    Sat May  1 16:56:32 CEST 2010

Então, duas coisas necessárias em duas fases:

INPUT - > "filenameXXX.txt" antes da primeira coluna - > OUTPUT1

OUTPUT1 - > converter vezes unix para tempos normais - > OUTPUT2

Como fazer isso usando bash ou sed ou perl? [não precisa de tudo, apenas 1 é suficiente: D]

ehh..e eu preciso disso em duas partes [então dois one-liner]:
 - ENTRADA para OUTPUT1
 - OUTPUT1 para OUTPUT2

Separadores de campos são "\ t" -s [tabs]!

    
por LanceBaynes 04.11.2011 / 06:10

1 resposta

5

Eu prefiro gawk para isso:

awk -vOFS='\t' 'NF{$1=FILENAME OFS $1;$2=strftime("%c",$2)}1' filename.txt

Aqui está uma alternativa perl também:

perl -nae 'print$ARGV,"\t",$F[0],"\t".localtime($F[1]),"\n"' filename.txt

Como você também perguntou sobre bash , veja o que ele poderia fazer:

while read -r who when; do
  readlink -n /proc/$$/fd/0
  echo -en "\t$who\t"
  date -d "@$when"
done < filename.txt

Em relação a sed , seu uso seria difícil e o benefício seria insignificante, pois não é possível informar o nome do arquivo de entrada e converter a data.

    
por 04.11.2011 / 08:47