用Vim(或tail)反轉文字的每一行順序

有時我們會需要把一個文字檔內容的每一行順序反轉過來,例如:

第一行
第二行
最後一行

反轉順序後成為:

最後一行
第二行
第一行

這時可以用Vim(或Linux/MacOS的tail指令)簡單做到,順便學一下關於Vim的新知識。

用Vim

用Vim很簡單,以下指令就可以將整個Vim編輯區內容的每一行順序反過來:

:g/^/m0

這是甚麼意思呢?

  1. g代表針對全部範圍(global)的每一行、只要是符合後面regular expression條件的,就套用指定行動。
  2. /^/就是用來比對的regular expression。因為是用^,所以任何內容(包括空行)都能符合條件。(若是用/.///,空行會比對不到,各位不妨試試看。)
  3. m0就是指定的行動。其中m是move(移動)指令,0是該指令的參數,意思是把buffer內容移動到第0行,最後的效果就是每一行順序被反轉過來。

用tail指令

除了Vim之外,還可以用Linux或MacOS的tail指令,加上-r參數即可。例如以下指令可以反轉sample.txt文字檔內容:

tail -r sample.txt

以上就是Vim(和tail)的冷知識。是不是很簡單呢?

0筆討論 回應文章