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