추가 열을 추가할 때 AWK 이상한 출력 동작

추가 열을 추가할 때 AWK 이상한 출력 동작

다음을 포함하는 file.csv가 있습니다.

ID,FN,LN,NUM
576,Pra,Mar,3
688,India,Desa,3
645,Ami,Path,5
245,Me,Yo,4

모든 열 필드를 인쇄하려고 하면 제대로 작동합니다.

awk '{인쇄 $1,$2,$3,$4}' FS=, OFS=, file.csv

ID,FN,LN,NUM
576,Pra,Mar,3
688,India,Desa,3
645,Ami,Path,5
245,Me,Yo,4

하지만 끝에 추가 열을 추가하려고 하면 작동하지 않습니다.

awk '{print $1,$2,$3,$4,"R"}' FS=, OFS=, file.csv

,R,FN,LN,NUM
,R576,Pra,Mar,3
,R688,India,Desa,3
,R645,Ami,Path,5
245,Me,Yo,4,R

내가 원하는 출력은

ID,FN,LN,NUM,R
576,Pra,Mar,3,R
688,India,Desa,3,R
645,Ami,Path,5,R
245,Me,Yo,4,R

내가 뭘 잘못했나요?

답변1

입력 파일에 캐리지 리턴/줄 바꿈 끝이 있는 경우 이 작업을 수행합니다.

이것은 vi에서의 모습입니다(명확성을 위해 목록 모드를 원할 수도 있습니다):

Wed Mar 30 18:53:01 EDT 2016
ID,FN,LN,NUM^M
576,Pra,Mar,3^M
688,India,Desa,3^M
645,Ami,Path,5^M
245,Me,Yo,4^M
Wed Mar 30 18:53:01 EDT 2016
ID,FN,LN,NUM^M,R
576,Pra,Mar,3^M,R
688,India,Desa,3^M,R
645,Ami,Path,5^M,R
245,Me,Yo,4^M,R

두 번째 예에서는 ^M문자가 ",R" 앞에 오므로 해당 문자가 줄의 시작 부분에 인쇄됩니다.

이것을 에서 보면대신에, 비슷한 내용이 표시됩니다.

다양한 방법으로 줄 끝을 변환할 수 있습니다.

  • 존재하다, 를 입력하면 controlG상태 표시줄에 "[dos]"가 표시되고 ":set"(Enter)를 입력하면 출력에 "dos"가 표시됩니다. 다음과 같이 변환할 수 있습니다.
    :ff=유닉스로 설정
    :와!
  • 명령줄에는 아마도 있을 dos2unix것입니다.

추가 자료:

관련 정보