여러 파일에 첫 번째 열을 삽입하는 방법 + 유닉스 시간을 일반 시간으로 변환하는 방법

여러 파일에 첫 번째 열을 삽입하는 방법 + 유닉스 시간을 일반 시간으로 변환하는 방법

디렉터리에는 다음 내용을 포함하는 많은 파일이 있습니다.

입력하다:

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

따라서 두 단계에는 두 가지가 필요합니다.

INPUT -> 첫 번째 열 앞의 "filenameXXX.txt" -> OUTPUT1

OUTPUT1 -> Unix 시간을 일반 시간으로 변환 -> OUTPUT2

bash, sed 또는 perl을 사용하여 이를 수행하는 방법은 무엇입니까? [모두 필요하지 않고 1개이면 충분합니다 :D]

어.. 두 부분으로 나누어야 합니다 [그래서 두 줄]:
- INPUT에서 OUTPUT1
- OUTPUT1에서 OUTPUT2

필드 구분 기호는 "\t" -s [ Label]입니다!

답변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입력 파일의 이름을 알 수 없고 날짜를 변환할 수 없기 때문에 사용하기 어렵고 이점이 무시할 수 있습니다.

관련 정보