awk에서 변수 값을 사용하는 방법

awk에서 변수 값을 사용하는 방법

숫자가 저장되는 days.txt라는 파일이 있습니다. 하늘. 여기에는 1개의 레코드(현재 7개)만 포함되어 있습니다.

다음 awk 표현식에서 days.txt 값을 사용하고 싶습니다.

awk -F, '{ $1 = substr($1,1,1) strftime("%Y%m%d",mktime(sprintf("%4d %.2d %.2d 00 00 00",substr($1,2,4),substr($1,6,2),substr($1,8,2)))-7*24*60*60) }; 1' OFS="," file

이 awk 문은 기본적으로 다른 파일의 날짜를 7일씩 옮깁니다. 변수에 days.txt 값을 사용하려고 하면 awk 문이 오류를 반환하지 않지만 날짜도 이동하지 않습니다.

awk -F, '{ $1 = substr($1,1,1) strftime("%Y%m%d",mktime(sprintf("%4d %.2d %.2d 00 00 00",substr($1,2,4),substr($1,6,2),substr($1,8,2)))-$(value)*24*60*60) }; 1' OFS="," file

이에 대한 도움이 매우 도움이 될 것입니다!

답변1

값을 먼저 쉘 변수로 읽지 말고 awk 변수로 읽으십시오.

awk '
    BEGIN {FS=OFS="," }
    NR==FNR { value=$0; next }
    { $1 = substr($1,1,1)...substr($1,8,2)))-value*24*60*60) }
1' days.txt file

관련 정보