私は最近学び始めましたが、ed
テキストを検索する必要があるレベルに達しました。私の最初の試みは、発生回数は表示しますが行番号は表示しないのed
コマンドでした。/
バニラではこれは可能ですed
か?
答え1
g
+ n
(グローバル+数値コマンド)を使用できます。
$ ed -p 'ed> ' file
ed> ,p
tree
apple
lemon
fruit
not
here
pear
apricot
end
ed> g/a/n
2 apple
7 pear
8 apricot
利用可能なすべてのコマンドについては、マニュアルを確認してください。POSIXバージョンそしてGNU教育用エディション。
答え2
これを使用して、=
編集バッファ内の行の行番号を出力できます。式を使用して検索しRE
、最初のヒットの行番号を出力するには、次のようにします。
/RE/ =
このn
コマンドは、行番号の前に付いた現在の行を出力します。他の行または行の範囲にも適用できます。
/RE/ n
一致するすべての行の行番号を取得するには、=
またはコマンドn
と一緒に使用します。g
ただし、コマンドのベースアドレスは=
現在の行ではなく編集バッファの最後の行であるため、明示的にアドレスを指定しない限り、使用すると=
誤った結果が得られます。だから使用g
.
g/RE/ .=
一致するすべての行の行番号のみを取得しますRE
。
使用
g/RE/ n
一致するすべての行RE
とその行番号を出力します(似ていますgrep -n 'RE'
が、形式は異なります)。