長い文字列に改行を挿入するコマンドラインツールはありますか?

長い文字列に改行を挿入するコマンドラインツールはありますか?

限られたテキスト幅で表示する必要がある長い文字列がある場合、単一行文字列を複数行文字列に変換できるコマンドラインツールは* 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.

答え1

次のfoldコマンドを試すことができます。

echo "$MYSTRING" | fold -w 30

答え2

fmt(GNU coreutilsの一部とIIRCの異なるバージョンは、GNUではなく* nixesに含まれているため、ほぼ確実にインストールされます。)全体の目的は、段落形式を再指定することです。

parしかし、(段落再構成)というより良いツールがあります。fmt可能なすべての操作を実行しますが、正確な出力形式を制御するためのより多くのオプションがあります。

本当に良いことの1つparは、電子メールの引用(さまざまなレベルの引用を含む)を非常にインテリジェントに扱うことです。とても便利です。 F5キーを押すと、現在の段落がparを介して送信されるように.vimrcを設定しました。

ディストリビューション用にパッケージ化されていない場合(Debian および派生製品用であり、おそらく他のディストリビューションにも該当します)、次の項目を見つけることができます。http://www.nicemice.net/par/

答え3

これを使用する1つの方法は次のとおりですsed

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

答え4

fold -sあなたの質問に対する最短で最善の答えです。

ただし、これらの単一目的ツールは場合によっては有効である可能性がありますが、通常、そのタスクは編集者に任せることをお勧めします。

Emacsでは好きなように調整できます。私は通常、段落の終わりを除いて改行したくないのでvisual-line-mode(パターンラインで二次モードで表示)を使用します。Wrap

私はどうしたのかみんなに言わなければならないと思った。これが「唯一の」方法ではありませんが、私は関数と変数について言及したように方法です。あなたのアプローチは、それらを組み合わせて自動化し、あなたに合うようにすることです。 (これはEmacsですが、十分に高度なエディタであれば同様の投稿を書くことができます。)

私はタイプするときに行を視覚的に包み、決して手動で壊さないと言いました。いつものように例外があります。たとえば、GNUSは行が特定の幅(文字数)を超える投稿をUsenetに送信しません。だからM-qEmacsM-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-line2行の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。 (ストレスをたくさん受けているようですが、それは私だけです。)

これは多くの作業のように見えますが、一度作業を実行したら(この作業とは異なる何千もの作業を実行したら)、必要な方法で正確に機能するこれらのツールを使用して作業を楽しむことができます。

関連情報