Bash에서 문자열 변수를 정렬하는 방법

Bash에서 문자열 변수를 정렬하는 방법

Bash에서 문자열 변수를 정렬하려고 합니다. 이는 예상된 동작입니다.

if str1="123"  , then str2="     123"
if str1="1234" , then str2="    1234"
if str1="12345", then str2="   12345"

printf를 사용하여 인쇄하는 방법을 알아냈는데, 인쇄하지 않고 변수 내부에서 해야 합니다.

답변1

변수에 단일 바이트, 단일 폭 문자만 포함되어 있다고 가정합니다.

printf -v str2 %8s "$str1"

멀티바이트(여전히 단일 너비) 문자가 포함된 경우 다음을 수행할 수 있습니다.

printf -v str2 %8s%s '' "$str1"
str2=${str2: -8}

(그러나 주의할 점은자르기값이 8자보다 큼).

여기에 내장 bash된 명령은 결과를 변수에 저장하는 것을 printf지원 하지만 그렇지 않은 경우에도 명령 대체를 사용할 수 있습니다.-vprintf

str2=$(printf %8s "$str1")

관련 정보