では、ed
コマンドの出力を現在のバッファに取得するために使用できますr !COMMAND
。コマンド入力に一連の行を書き込むこともできます1,3w !COMMAND
。
ただし、これら2つの操作を同時に実行する方法はわかりません。
r 1,3w !sort
1,3w !sort: No such file or directory
でこれを行うことはできますかed
?
答え1
私が見つけた唯一の方法は、外部ファイルを使用して結果を一時的に保存することです。
$ cat input.txt
13
5
29
22
45
64
17
20
69
91
$ ed input.txt
29
1,3w !sort -n > temp.txt
8
1,3d
0r temp.txt
8
wq
29
答え2
2つを同時に行う方法
テキストバッファ内のコマンドで1行を書き込んでstdin
再読み込みして元の行を置き換えることはできません。明らかに、この種のタスクを実行するように設計されていません。一度試してみてください。しかし、ファイルを開き、テキストバッファから行を削除し、別の呼び出しで処理してから(現在のバッファではなく元のファイルから読み取る)、元の読み込み前にバッファを出力するなど、いくつかのバリエーションをいつでも使用できます。ライン範囲:
stdout
ed
vim
ed
ed
ed
ed -s 入力ファイル
5,8d
4r ! ed -s infile<<<$'5,8w !sort -n\nq'
,p
q