文字列に一連の数字を表示するには?

文字列に一連の数字を表示するには?

文字列の一連の数字を表示できるスタンドアロンコマンドまたはviまたは同様のコマンド(guiかもしれません)はありますか?

入力:猫が箱の中に飛び込みます。

出力:

T h e   c a t   h o  p  p  e  d     i  n     a     b  o  x  .
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24

ベストアンサー1

これはハイブリッドPerl / Foldアプローチです。

$ echo "The cat hopped in a box." | fold -w 1 | 
     perl -lne 'push @k, "$_ "; push @l,sprintf "%-2s",$.; END{print "@k\n@l"}'
T  h  e     c  a  t     h  o  p  p  e  d     i  n     a     b  o  x  . 
1  2  3  4  5  6  7  8  9  10 11 12 13 14 15 16 17 18 19 20 21 22 23 24

説明する

  • fold -w 1:入力内容を1文字幅に折りたたみ、各入力文字を別々の行に印刷します。
  • perl -lne:入力から末尾の改行を削除し、-l各呼び出しに改行を追加します。入力をprint1行ずつn読み、eそれに対して実行するスクリプトを提供します。
  • push @k, " $_";:現在の行にスペース()を追加し$_て配列に保存します@k
  • push @l,sprintf "%-2s",$.;sprintfフォーマットされた文字列を返します。ここでは、現在の行番号()を指定して$.印刷するように指示し、必要に応じてスペースを追加して長さを2にします。次に、その文字列を配列に追加します@l
  • END{print "@k\n@l"}':ファイル全体を読み込んだ後、2つの配列を印刷します。

文字番号だけが必要で、複数行の出力に気を使わない場合は、より簡単なアプローチは次のとおりです(簡潔にするために短い文字列を使用)。

$ echo "foo bar" | fold -w1 | cat -n
 1  f
 2  o
 3  o
 4   
 5  b
 6  a
 7  r

おすすめ記事