특정 열의 숫자 형식을 다시 지정합니다.

특정 열의 숫자 형식을 다시 지정합니다.

세 번째 열이 십진수인 세미콜론으로 구분된 데이터가 있습니다.

A;B;1234.56
C;D;789.23

숫자 형식을 두 가지 변경해야 합니다.

  1. 소수점 뒤의 숫자 제거
  2. 숫자에 "천 단위 구분 기호" 추가

그래서 1234.56그것은 될 것입니다1'234

첫 번째 부분을 완료할 수 있었지만 천 단위 구분 기호를 추가하는 방법을 모르겠습니다.

printf "A;B;1234.56\nC;D;789.23\n" | awk -F';' '{gsub(/\.../,"",$3) ; printf "%s,%s,%s\n", $1, $2, $3 }'

어떻게 해야 하나요?

답변1

LC_NUMERIC='en_US.UTF-8'로케일(숫자의 천 단위 구분 형식으로 쉼표를 지원함)을 사용 하고 sprintf's %\047d( 작은따옴표를 사용하여 작성된 %\047d또 다른 유형)를 사용하십시오.%'d8진수 이스케이프 시퀀스또는 %'\''d작성할 수도 있음) 부동 소수점을 정수로 강제 변환하고 사용하는 형식 수정자반점천 단위 구분 기호로 사용하면 이 gsub()함수를 사용하여 쉼표를 작은따옴표로 변환합니다.

$ LC_NUMERIC='en_US.UTF-8' awk 'BEGIN{ FS=OFS=";" }
  { $3=sprintf ("%\047d", $3); gsub(",", "\047", $3) }1' infile
A;B;1'234
C;D;789

관련 정보