기존 파일에 헤더와 트레일러를 즉시 추가하는 방법

기존 파일에 헤더와 트레일러를 즉시 추가하는 방법

기존 텍스트 파일에 제목과 예고편을 추가하는 쉬운 방법이 있습니까? 같은 디렉터리에 같은 텍스트 파일이 있습니다. 예를 들어 awk?
처리 방법에 대한 설명과 함께 도움을 주셔서 감사합니다 awk. 감사해요.

내가 아는 것은 꽤 많은 단계를 포함하기 때문입니다. 다음을 참고하세요.

기존 파일의 예고편에 헤더를 추가하고 싶다고 가정해 보겠습니다.경고.txt
파일은 다음과 같은 디렉터리에 있습니다.$Source_Dir

텍스트 파일에는 열 이름이 포함되어 있으므로 레코드를 계산하기 위한 Record_Count두 개의 변수가 있습니다.Actual_Record_Count

Record_Count=`wc -l < ${Source_Dir}/${Output_File_Name} | tr -d " "`
Actual_Record_Count=`expr ${Record_Count} - 1`

ALERT먼저 제목이 붙은 텍스트 파일을 만듭니다.$Target_Dir

echo ${Bus_date} >${Target_Dir}/${Output_File_Name}

Alert.txt$Source_Dir그런 다음 에서 생성된 새 파일에 을 추가했습니다 .$Target_Dir

cat ${Source_Dir}/${Output_File_Name} >> ${Target_Dir}/${Output_File_Name}

Alert.txt마지막으로 예고편을 에 추가합니다 $Target_Dir.
예고편에는 레코드 수가 포함됩니다.

echo "EOF${Actual_Record_Count}" >>${Target_Dir}/${Output_File_Name}

답변1

$Bus_date따라서 줄에 헤더로 추가하려는 일부 쉘 변수가 있습니다 . 그 다음에는 content 가 오고 $Source_Dir/$Output_File_Name, 그 뒤에는 파일의 줄 수에서 1을 뺀 문자열 EOFNN이 와야 합니다.NN

사용 awk:

awk -v head="$Bus_date" 'BEGIN { print head } { print } END { print "EOF" NR-1 }' "$Source_Dir/$Output_File_Name" >"$Target_Dir/$Output_File_Name"

스크립트는 다음과 같습니다

BEGIN { print head }
      { print }
END   { print "EOF" NR-1 }

명령줄에서 awk변수를 head값으로 설정합니다 $Bus_date. 이 값은 주어진 파일에서 청크 읽기를 시작하기 전에 출력됩니다 BEGIN.

{ print }블록은 주어진 파일이 수정 없이 있는 그대로 전달되도록 보장합니다.

END블록은 내장 변수를 사용하여 NR지금까지 읽은 레코드(행) 수를 보유합니다. END청크 단위 로 NR읽은 파일의 줄 수입니다.

관련 정보