[unix] 긴 줄에 줄 바꿈을 삽입하는 명령 줄 도구가 있습니까?

제한된 텍스트 너비로 표시해야하는 긴 문자열이 주어지면 * nix에 한 줄 문자열을 여러 줄 문자열로 변환하여 각 줄이 주어진 텍스트 너비보다 길지 않은 명령 줄 도구가 있습니까?

예를 들어 다음 문자열이 주어지면

$ MYSTRING="Call me Ishmael. Some years ago - never mind how long precisely - having little or no money in my purse, and nothing particular to interest me on shore, I thought I would sail about a little and see the watery part of the world."

다음과 같이 다소 형식을 지정하고 싶습니다.

$ echo $MYSTRING | special-format-command --width=30
Call me Ishmael. Some years ag
o - never mind how long precis
ely - having little or no mone
y in my purse, and nothing par
ticular to interest me on shor
e, I thought I would sail abou
t a little and see the watery
part of the world.



답변

다음 fold명령을 시도해보십시오 .

echo "$MYSTRING" | fold -w 30


답변

다음을 사용하는 방법이 있습니다 sed.

sed 's/.\{30\}/&\
/g'


답변

의 전체 목적 fmt다시 포맷 단락이다 (GNU의로 coreutils 및 IIRC 다른 버전의 일부가 아직 설치되어 거의 확실하다, 비 GNU * nixes도 포함 된).

그러나 par(문단 포맷터를 위해) 라는 더 좋은 도구가 있습니다. 가능한 모든 작업을 수행 fmt할 수 있지만 정확한 출력 형식을 제어 할 수있는 훨씬 더 많은 옵션이 있습니다.

정말 좋은 점 중 하나는 par전자 메일에서 인용을 처리하는 것이 매우 똑똑하다는 것입니다 (여러 수준의 인용조차도). 매우 유용합니다 … F5를 치면 파를 통해 현재 단락을 보내도록 내 .vimrc를 설정했습니다.

배포판 용으로 패키지화되지 않은 경우 (데비안 및 파생 제품 용으로도 가능) http://www.nicemice.net/par/ 에서 par를 찾을 수 있습니다 .


답변

fold -s 귀하의 질문에 대한 가장 짧은, 최고의 답변입니다.

그러나 일부 경우에는 이러한 다목적 도구만큼이나 일반적으로 편집자에게이 작업을 수행해야합니다.

Emacs에서는 원하는대로 조정할 수 있습니다. 나를 위해, 나는 사용 visual-line-mode(A와 쇼를 Wrap일반적인 경우에, 나는 문단의 끝보다 다른 곳에서는 줄 바꿈을하지 않기 때문에 모드 라인에 작은 모드).

나는 내가하는 방법을 말할 것이라고 생각했다. “the”방식은 아니지만 한 가지 방법입니다. 함수와 변수에 대해 언급했듯이, 당신의 방법은 그것들을 모으고 자동화하여 그것들을 당신에게 적합하게 만드는 것입니다. (이것은 Emacs이지만, 충분히 고급 편집기라면 비슷한 게시물을 작성할 수 있습니다.)

나는 입력 할 때 시각적으로 줄이 감겨 있고 수동으로 끊지 않는다고 말했습니다. 항상 그렇듯이 예외가 있습니다. 예를 들어, GNUS는 특정 너비 (문자)를 초과하는 줄이있는 게시물을 Usenet에 보내지 않습니다. 그런 다음을 사용 M-q합니다. Emacs M-q에서 명령을 실행합니다 fill-paragraph. 변수 fill-column는 채우기 너비를 제어합니다. 예를 들어, 이것을 한 줄에 작성하면

This is a lot of text being written right now. The purpose is to overflow the line so I have have to line break it with M-q.

그리고 Mq를 사용하면

This is a lot of text being written right now. The purpose is to
overflow the line so I have have to line break it with M-q.

justify-current-line(2 회이 같은 라인), 당신은 얻을

This  is a lot  of text  being written  right now.  The purpose  is to
overflow  the  line  so  I  have  have to  line  break  it  with  M-q.

그러나 나는 사람들이 물건을보기 위해 모노 스페이스 글꼴을 거의 사용하지 않는다는 것을 알았습니다. 당신이 그것을 좋아한다면, 당신은 조정할 수 fill-paragraph채우기 동시에 정당화. 다음과 같이 입력 할 때 항상 Emacs가이 작업을 수행하도록 할 수도 있습니다 auto-fill-mode. (저는 스트레스가 많지만 저입니다.)

이것은 많은 일처럼 보일 수 있습니다. 그러나 일단 당신이 (이것과 다른 1000 가지로) 끝내면 원하는대로 정확하게 동작하는 도구로 작업하는 것을 즐길 수 있습니다.


답변