awk 스크립트에서 파일 이름의 일부를 추출하는 방법

awk 스크립트에서 파일 이름의 일부를 추출하는 방법

awk 스크립트를 사용하여 여러 파일로 분할한 다음 파일이 있습니다.

원본 파일 이름:RTLOG_5019_05122016110959.DAT

분할 파일의 이름을 다음과 같이 설정하고 싶습니다.

RTLOG_5019_<timestmap (format: mmddyyyyhhmiss) >.DAT.

어떻게 이를 달성할 수 있나요? 파일 이름을 하드코딩하거나 filename-RTLOG_5019_05122016110959.DAT매개변수로 전달하고 싶지 않습니다.

다음은 내 awk 스크립트입니다

awk -v stamp=$(date +%Y%m%d%H%M%S)  '
/^FHEAD/        {HD = $0  
             next
            }

/^THEAD/        {if (FN)  { printf "FTAIL%010d%010d" ORS, LN+2, LN > FN
                        close (FN)
                        LN = 0
                      }
             FN = "RTLOG_5019_" stamp ".DAT" ++f
             print HD > FN
            }

            !/^FTAIL/ {print >> FN
             LN++
            }

END             {printf "FTAIL%010d%010d" ORS, LN+2, LN > FN
            } ' RTLOG_5019_05122016110959.DAT

답변1

정확히 무엇을 하려는지 잘 모르겠지만 다음이 도움이 될 수 있습니다.

 awk -v var="new" 'BEGIN { print substr(ARGV[1], 0, 2) var substr(ARGV[1], 6); }' myoldfilename

관련 정보