[Shell Script] 텍스트 좌우 정렬, 가운데 공백 채우기
프로그래밍/BASH SHELL2024. 7. 5. 11:39
반응형
결과를 출력해야 하는 파일에서 아래 예제를 적용해 사용하면 됩니다.
한글은 원래 3 bytes 이지만 한글 한 글자가 영문 두 글자를 차지하므로, 2bytes 로 체크 해야 하는 것이 포인트 입니다.
한글 문자를 2 bytes 로 간주하고 문자열의 자릿수를 계산하려면, 각 문자의 유니코드 포인트를 확인하여 한글 문자인지 판단하고, 바이트 수를 계산해야 합니다.
# vi result.sh
#!/bin/bash CALCULATE_LENGTH() { local input="$1" local length=$(echo -n "$input" | perl -C -Mutf8 -lpe '$_=length(join("",map{/[\x{AC00}-\x{D7AF}]/ ? "xx" : $_} split //))') echo "$length" } PRINT_ALIGNED() { left="$1" right="$2" total_length=60 left_length=$(CALCULATE_LENGTH "$1") right_length=$(CALCULATE_LENGTH "$2") space_length=$((total_length - left_length - right_length)) printf "%s%*s%s\n" "$left" "$space_length" "" "$right" } # 결과 파일 초기화 > a.txt # 출력 내용 작성 PRINT_ALIGNED "티스토리 홈페이지" "100점" >> a.txt PRINT_ALIGNED "sysdocu" "90점" >> a.txt PRINT_ALIGNED "ID 는 sysdocu, 이름은 개발왕자" "100점" >> a.txt cat a.txt |
# sh result.sh
반응형
'프로그래밍 > BASH SHELL' 카테고리의 다른 글
정규표현식 연속된 문자 검색 (0) | 2023.06.02 |
---|---|
[ShellScript] 로그 파일 실시간 감시 및 마지막행 처리 방법 (0) | 2023.03.29 |
[쉘스크립트] 오래된 백업 파일 삭제하기 (0) | 2023.01.13 |
쉘스크립트 rsync 실행시 끝에 \#015 문자가 붙는 경우 조치방법 (0) | 2023.01.11 |
[Shell Script] MySQL 테이블 별로 백업 하기 (0) | 2022.09.08 |
댓글()