두 열 병합

두 열 병합

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블록은 탭 문자가 입력 필드 구분 기호 및 출력 구분 기호로 사용되도록 보장합니다.

관련 정보