input_file(열은 탭으로 구분되며 열 4에만 공백이 포함됩니다)
입력하다
A B C D;<>X;<>Y 0
C D E F;<>Z;<>X 1
산출
A B C D;<>X;<>Y;<>apple=0
C D E F;<>Z;<>X;<>apple=1
input_file의 마지막 열을 두 번째에서 마지막 열과 병합하고 마지막 열의 값을 ";"으로 구분하고 싶습니다. 두 번째에서 마지막 열에 "apple=" 레이블이 있습니다(4번째 열과 마찬가지로). 입력 파일). 따라서 output_file에는 열 하나가 누락되었습니다. 포맷된 출력 파일의 무결성도 유지되어야 합니다. 모든 열은 탭으로 구분되어 있지만 열 4의 값에도 공백(D;<>X;<>Y)이 있기 때문입니다.
따라서 입력 파일의 모든 필드 구분 기호를 유지하고 두 번째 열의 마지막 열 값만 레이블(apple=)과 병합하려고 합니다. 감사해요
답변1
마지막 필드를 변경하고 마지막 필드를 삭제합니다.
$ awk '{$(NF-1)=$(NF-1)";<>apple="$NF;$NF="";}1' OFS="\t" file
답변2
가장 간단한 방법은 아마도 다음과 같습니다 awk
.
awk 'BEGIN {FS=OFS="\t"} { $4 = $4 ";<>apple="$5; print $1, $2, $3, $4 }'
이 BEGIN
블록은 탭 문자가 입력 필드 구분 기호 및 출력 구분 기호로 사용되도록 보장합니다.