2010-11-21 6 views
3

문제점이 하나 있습니다. 내 텍스트는 지정된 너비만큼 오른쪽 정렬되어야합니다. 내가 원하는 크기로 출력을 잘라 냈다,하지만 난 오른쪽 여기오른쪽 텍스트 정렬 - bash

에 최선을 다하는으로 문제가 내가 무엇을 가지고 있습니다 :

#!/usr/local/bin/bash 

length=$1 
file=$2 
echo $1 

echo -e "length = $length \t file = $file " 
f=`fold -w$length $file > output` 
while read line 
do 
     echo "line is $line" 
done < "output" 

감사

답변

16

시도 :

printf "%40.40s\n" "$line" 

너비가 40 인 경우 오른쪽 정렬됩니다. 잘리지 않으려면 .40 (Dennis!에게 감사하십시오) :

printf "%40s\n" "$line" 

예를 들어 :

printf "%5.5s\n" abc 
printf "%5.5s\n" abcdefghij 
printf "%5s\n" abc 
printf "%5s\n" abcdefghij 

인쇄됩니다 :

abc 
abcde 
    abc 
abcdefghij 
+0

이 좀 이상한 출력을 제공 할 수있다, 왜 – cubrilo

+0

을 모르는 :) 출력이 무엇인지 짐작할 수 있다고 생각하니? 다른 의견에 문제를 게시하십시오. 너무 길면 질문을 수정하고 거기에 게시하십시오. –

+0

@cubrilo :'printf "% 40.40s \ n" "$ line"'과 같은 결과가 출력되도록'\ n' 개행을 원할 수 있습니다. '.40'은 출력이 길어질 때 잘리는 결과를 낳지 만 원하는 부분은 생략 할 수 있습니다. –

1

귀하의 마지막 단계

sed -e :a -e 's/^.\{1,$length\}$/ &/;ta' 
+0

내가 이것을 넣을 때 : f ='fold -w $ lenght $ file> output' sed -e : a -e 's/^. \ {1, $ length \} $/&/ta ' echo "sed 후 줄이 $ line" < "test"완료되었습니다. sed : 1 : "s/^. \ {1, $ length \} $/& /; ta ": RE 오류 : 반복 횟수가 올바르지 않음 sed 후 줄이 마지막 줄입니다. – cubrilo

+0

@cubrilo : 작은 따옴표를 큰 따옴표로 변경하십시오.'sed -e : a -e"s/^. \ {1, $ length \} $/& /; ta "'그러나이 방법은 문자열이 충분히 길 때까지 반복되므로 느립니다. –

관련 문제