CSV에 후행 0을 추가하는 방법

CSV에 후행 0을 추가하는 방법

다음은 CSV 파일의 예입니다.

12354506.0,4
13129229.0,4
815612,5
7624107.0,5
6056548.0,5

첫 번째 열의 후행 0은 CSV 뷰어에서 구멍 번호 형식으로 지정됩니다.

뒤에 오는 0을 선택하는 옵션이 있나요?

첫 번째 열 앞에 작은따옴표를 붙여서 뒤에 0을 추가할 수 있습니다. 그런데 작은 따옴표가 이상하게 보입니다.

'12354506.0,4
'13129229.0,4
'815612,5
'7624107.0,5
'6056548.0,5 

답변1

CSV 뷰어 소프트웨어는 소수 부분을 포함하여 부동 소수점 숫자를 감지할 수 있는 것으로 보이므로 숫자는 소수점 이하 한 자리 이상을 갖도록 변환해야 합니다.

한 가지 방법은 다음과 같습니다 awk.

awk -F, -vOFS="," '$1 == int($1) { $1 = sprintf("%.1f", $1) } 1' file >newfile

그러면 첫 번째 쉼표로 구분된 필드가 정수인지 테스트합니다. 이 경우 필드를 다음과 같이 다시 작성합니다 n.0( n원래 번호는 어디에 있습니까?). 코드를 후행하면 1모든 줄이 출력됩니다.

결과는 새 파일에 기록됩니다 newfile.

유사한 솔루션은 다음을 사용합니다 sed.

sed 's/^\([0-9]*\),/\1.0,/' file >newfile

여기서는 쉼표 바로 뒤에 있는 숫자를 일치시키고 동일한 숫자 .0와 쉼표로 바꿉니다. 이미 소수 부분이 있는 숫자는 무시되지만 .0소수 부분이 없는 숫자에는 추가됩니다.

답변2

이는 순전히 사용 중인 CVS 뷰어의 동작입니다. MS Excel을 사용하여 동일한 문제를 재현할 수 있습니다.

awk -F "," '{print "=\""$1"\","$2}' test.csv > test3.csv
  • =데이터를 텍스트로 강제합니다.

파일을 편집합니다.

echo "$(awk -F "," '{print "=\""$1"\","$2}' test.csv)" > test.csv

답변3

인용하다답변.

 awk -F ","  'BEGIN {OFS = FS}{$1="=\""$1"\""; print}' test.csv

CSV에 얼마나 많은 필드가 있는지 알 수 없습니다. 모든 필드를 인쇄하도록 선언하는 것은 매우 어렵습니다. 따라서 필수 필드를 더 잘 편집할 수 있습니다.

관련 정보