다음과 같이 숫자가 너무 많은 테이블이 있습니다.
MONTH A1 A2 A3 ......
1 1.54564468 2.48949 6.4984984 .....
Unix를 사용하여 테이블을 다음과 같이 다시 형식화하는 방법이 있습니까?
MONTH A1 A2 A3 ...
1 1.54 2.49 6.50 ...
답변1
"유닉스 사용"이 무슨 뜻인지 잘 모르겠지만 (s)printf
기본적인 C 스타일 기능을 제공하는 거의 모든 도구는 가장 간단한 도구와 같이 이 작업을 수행할 수 있어야 합니다.
$ perl -pe 's/\d+\.\d+/sprintf "%.2f", $&/ge'
MONTH A1 A2 A3 ......
1 1.54564468 2.48949 6.4984984 .....
MONTH A1 A2 A3 ......
1 1.55 2.49 6.50 .....
필요한 정확한 명령은 테이블 데이터의 세부 사항에 따라 달라집니다. 예를 들어 보다 일반적인 부동 소수점 숫자(예: 지수를 포함할 수 있음)를 처리해야 하는지 여부입니다.
답변2
테이블이 실제로 탭으로 구분된 값의 파일이라고 가정합니다.
awk -v OFS='\t' 'NR-1 { for(i=1; i<=NF; i++) $i = sprintf("%.2f", $i) } 1' <file.csv
편집하다:Perl도 마찬가지입니다.
perl -lape '$.-1 and $_ = join "\t", map { sprintf "%.2f", $_ } @F' file.csv
답변3
시작은 다음과 같습니다.
for line in "1 1.54564468 2.48949 6 .4984984"; do printf "%.2f " $line; done
1.00 1.55 2.49 6.00 0.50