文字列の一連の数字を表示できるスタンドアロンコマンドまたは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
各呼び出しに改行を追加します。入力をprint
1行ずつ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