複数のファイルに最初の列を挿入する方法+ Unixの時間を通常の時間に変換する方法

複数のファイルに最初の列を挿入する方法+ Unixの時間を通常の時間に変換する方法

ディレクトリには、次の内容を含む多くのファイルがあります。

入力する:

root    1324711901
sshd    1272725792

ファイルの内容を次に変換する方法の解決策を探しています。

出力1:

filenameXXX.txt root    1324711901
filenameXXX.txt sshd    1272725792

出力2:

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

したがって、2つのステップには2つのステップが必要です。

INPUT -> 最初の列の前の "filenameXXX.txt" -> OUTPUT1

OUTPUT1 -> Unix時間を通常の時間に変換 - > OUTPUT2

bash、sed、またはperlを使用してこれを行うには? [すべて必要なく、1つで十分です:D] ええと、

2つの部分に分ける必要があり ます



答え1

私はgawkこれを好む:

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

これはperlまた代わりです:

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

また、要求どおりにbash次のことを行います。

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

の場合、sed入力ファイルの名前が不明で日付を変換できないため、使いにくく、利点は無視できます。

関連情報