[unix] 읽을 텍스트 파일을 짧은 줄로 나누시겠습니까?

긴 줄이있는 일반 텍스트 파일을 가져 와서 특정 수의 문자 뒤에 개행을 추가하여 단어로만 분할하여 읽을 수 있도록하는 프로그램이 있습니까? 예를 들어 다음을 수행하십시오.

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam vel lectus ac enim venenatis porttitor in et est. Curabitur ut eros quis risus consequat dictum a a lectus. Integer ut risus quis augue lobortis molestie vel id nibh. Aliquam sit amet mattis lorem, vel ornare felis. Donec pulvinar tempus lorem, at porta sem pretium ut. Cras ut lorem tincidunt, scelerisque nunc vitae, posuere augue. Vestibulum iaculis libero id congue ultrices. Nullam mauris ipsum, aliquet eget nisl non, venenatis euismod enim. Phasellus a eleifend velit. Aenean molestie venenatis turpis, consectetur convallis velit fringilla non.

그리고 이것을 이것으로 바꾸십시오 :

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam vel
lectus ac enim venenatis porttitor in et est. Curabitur ut eros quis
risus consequat dictum a a lectus. Integer ut risus quis augue lobortis
molestie vel id nibh. Aliquam sit amet mattis lorem, vel ornare felis.
Donec pulvinar tempus lorem, at porta sem pretium ut. Cras ut lorem
tincidunt, scelerisque nunc vitae, posuere augue. Vestibulum iaculis
libero id congue ultrices. Nullam mauris ipsum, aliquet eget nisl non,
venenatis euismod enim. Phasellus a eleifend velit. Aenean molestie
venenatis turpis, consectetur convallis velit fringilla non.



답변

내가 생각하는 명령은이라고 fmt합니다.

$ fmt loremipsum.txt
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam vel
lectus ac enim venenatis porttitor in et est. Curabitur ut eros quis risus
consequat dictum a a lectus. Integer ut risus quis augue lobortis molestie
vel id nibh. Aliquam sit amet mattis lorem, vel ornare felis. Donec
pulvinar tempus lorem, at porta sem pretium ut. Cras ut lorem tincidunt,
scelerisque nunc vitae, posuere augue. Vestibulum iaculis libero id congue
ultrices. Nullam mauris ipsum, aliquet eget nisl non, venenatis euismod
enim. Phasellus a eleifend velit. Aenean molestie venenatis turpis,
consectetur convallis velit fringilla non.

너비 등과 같은 결과를 제어 할 수 있습니다.

$ fmt --help
Usage: fmt [-WIDTH] [OPTION]... [FILE]...
Reformat each paragraph in the FILE(s), writing to standard output.
The option -WIDTH is an abbreviated form of --width=DIGITS.

Mandatory arguments to long options are mandatory for short options too.
  -c, --crown-margin        preserve indentation of first two lines
  -p, --prefix=STRING       reformat only lines beginning with STRING,
                              reattaching the prefix to reformatted lines
  -s, --split-only          split long lines, but do not refill
  -t, --tagged-paragraph    indentation of first line different from second
  -u, --uniform-spacing     one space between words, two after sentences
  -w, --width=WIDTH         maximum line width (default of 75 columns)
      --help     display this help and exit
      --version  output version information and exit

With no FILE, or when FILE is -, read standard input.


답변

아마도 최선의 선택은 텍스트 편집기 일 것입니다. 대부분은 어떤 종류의 텍스트 줄 바꿈을 제공합니다.

좀 더 평범한 것을 찾고 있다면 사용 sed하거나 비슷한 것을 생각 해낼 수 있습니다 . 로 긴 줄을 퍼팅 loremipsum.txt및시키는 sed56-73 문자가 공백 후 랩을, 당신의 원하는 결과를 제공합니다 …

$ sed -r -e 's/.{56,73} /&\n/g' loremipsum.txt
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam vel
lectus ac enim venenatis porttitor in et est. Curabitur ut eros quis
risus consequat dictum a a lectus. Integer ut risus quis augue lobortis
molestie vel id nibh. Aliquam sit amet mattis lorem, vel ornare felis.
Donec pulvinar tempus lorem, at porta sem pretium ut. Cras ut lorem
tincidunt, scelerisque nunc vitae, posuere augue. Vestibulum iaculis
libero id congue ultrices. Nullam mauris ipsum, aliquet eget nisl non,
venenatis euismod enim. Phasellus a eleifend velit. Aenean molestie
venenatis turpis, consectetur convallis velit fringilla non.

… 또는 당신은 fold -s -w 74 loremipsum.txt내가 추측 하는 것을 사용할 수 있습니다 …


답변

fold -s -w 72결과를 얻기 위해 텍스트를 파이프 할 수 있습니다 .

시스템에 fold파이썬이 설치되어 있지 않지만 파이썬이 설치되어 있다면

cat /var/tmp/li.txt | cat /var/tmp/li.txt | python -c "import sys; from textwrap import fill; print fill(sys.stdin.read(), width=72)"


답변