0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

nlコマンドAdvent Calendar 2020

Day 20

エディタでnlコマンドを代替する

Last updated at Posted at 2020-12-20

nlコマンドを用いずにテキストに行番号をつける方法をまとめます。あまり細かい挙動にはこだわりません。今回はエディタ編です。

SED

非対話エディタの定番ですがStreamEDitorを利用した方法です。

=paste

$ yes | head | sed = | paste - -
1	y
2	y
3	y
4	y
5	y
6	y
7	y
8	y
9	y
10	y

行番号と行テキストの間にタブが入るだけなので、書式はlnに近いですね。sed=で行番号が出力できるのですが、改行されてしまいますのでpasteで横に並べています。

$ yes | head -n 2 | sed = 
1
y
2
y

Vim

代表的なテキストエディタ、Vimです。これも非対話に実行することができます。

:set number

$ yes | head | vim -es /dev/stdin +':set number' +%p +q!
      1 y
      2 y
      3 y
      4 y
      5 y
      6 y
      7 y
      8 y
      9 y
     10 y

書式はrnです。Vimは-eでexモードで実行、-sはサイレントモードというオプションらしいです。/dev/stdin-で置き換え可能ですが余計なメッセージが出ます。やっていることは、行番号を表示:set numberして、出力%pして閉じるq!だけですね。

$ yes | head | vim - -es  +':set number' +%p +q!
Vim: 標準入力から読込中...
      1 y
      2 y
      3 y
      4 y
      5 y
      6 y
      7 y
      8 y
      9 y
     10 y

詳しくはこちら「【なにそれこわい】Vimシェル芸というvimshellとは異なる何かが誕生した模様」を読んでみてください。よくわかりません。


この他にもシェル芸botなどでおもしろい方法を見つけたら追記していこうと思います。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?