Text-Processing

如何顯示字元串的數字字元序列?

  • October 30, 2014

是否有獨立的或在 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

這是一種混合 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:這將以一個字元的寬度折疊輸入,導致每個輸入字元列印在單獨的行上。
  • perl -lne-l從輸入中刪除尾隨換行符,並為每個print呼叫添加一個換行符;n逐行讀取輸入並提供在其e上執行的腳本。
  • push @k, " $_";: 在目前行 ( $_) 中添加一個空格並將其保存在數組中@k
  • push @l,sprintf "%-2s",$.;:sprintf將返回一個格式化的字元串,這裡我們給它目前行號 ( $.) 並告訴它列印它並根據需要添加空格以使其長度為 2。然後將字元串添加到@l數組中。
  • END{print "@k\n@l"}': 讀取整個文件後,列印兩個數組。

如果您只需要對字元進行編號並且不介意多行輸出,則更簡單的方法是(為簡潔起見使用較短的字元串):

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

引用自:https://unix.stackexchange.com/questions/164982