세 번째 열이 십진수인 세미콜론으로 구분된 데이터가 있습니다.
A;B;1234.56
C;D;789.23
숫자 형식을 두 가지 변경해야 합니다.
- 소수점 뒤의 숫자 제거
- 숫자에 "천 단위 구분 기호" 추가
그래서 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
또 다른 유형)를 사용하십시오.%'d
8진수 이스케이프 시퀀스또는 %'\''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