이 파일이 주어지면:
$ cat file
alfa bravo charlie delta echo foxtrot golf hotel india juliet kilo lima mike
november oscar papa quebec romeo sierra tango
uniform_victor_whiskey_xray yankee zulu
70세가 되면 돌파도 하고 싶기도 하고, 보충도 열심히 하고 싶어요. "접기"를 시도했지만 다시 채워지지 않았습니다.
$ fold -w 70 file
alfa bravo charlie delta echo foxtrot golf hotel india juliet kilo lim
a mike
november oscar papa quebec romeo sierra tango
uniform_victor_whiskey_xray yankee zulu
"fmt"는 다시 채워지지만 공백에서만 구분할 수 있으므로 정확히 70개의 줄 바꿈이 보장되지는 않습니다.
$ fmt file
alfa bravo charlie delta echo foxtrot golf hotel india juliet
kilo lima mike november oscar papa quebec romeo sierra tango
uniform_victor_whiskey_xray yankee zulu
"pr"을 시도했지만 줄 바꿈 없이 줄만 잘린 것 같습니다.
$ pr -t -W 70 file
alfa bravo charlie delta echo foxtrot golf hotel india juliet kilo lim
november oscar papa quebec romeo sierra tango
uniform_victor_whiskey_xray yankee zulu
어쩌면 이 명령에 내가 놓친 몇 가지 옵션이 있거나 Awk 또는 Sed 솔루션이 있을 수도 있습니다. 나는 더 무거운 솔루션(Perl PHP Ruby)을 피하고 싶습니다.
답변1
sed 사용
GNU sed 사용:
$ sed -zE 's/\n/ /g; s/.{70}/&\n/g; s/$/\n/' file
alfa bravo charlie delta echo foxtrot golf hotel india juliet kilo lim
a mike november oscar papa quebec romeo sierra tango uniform_victor_wh
iskey_xray yankee zulu
POSIX sed의 경우:
sed -zE 'H;1h;$!d;x; s/\n/ /g; s/.{70}/&\n/g; s/$/\n/' file
awk를 사용하세요
$ awk '{r=(length(r)?r" "$0:$0); while(length(r)>70){print substr(r,1,70); r=substr(r,71)}} END{print r}' file
alfa bravo charlie delta echo foxtrot golf hotel india juliet kilo lim
a mike november oscar papa quebec romeo sierra tango uniform_victor_wh
iskey_xray yankee zulu
tr 및 폴드 사용
$ tr '\n' ' ' <file | fold -w 70
alfa bravo charlie delta echo foxtrot golf hotel india juliet kilo lim
a mike november oscar papa quebec romeo sierra tango uniform_victor_wh
iskey_xray yankee zulu
위의 코드는 후행 줄바꿈을 생성하지 않지만 필요한 경우 추가할 수 있습니다 echo ""
.
tr '\n' ' ' <file | fold -w 70; echo
답변2
이는 모든 상황에서 작동하지는 않지만 대부분의 사용 사례에 적용됩니다.
$ fmt -w 2500 file | fold -w 70
alfa bravo charlie delta echo foxtrot golf hotel india juliet kilo lim
a mike november oscar papa quebec romeo sierra tango uniform_victor_wh
iskey_xray yankee zulu