次のed
スクリプトが与えられたら
$ cat helloworld
a
hello
world
.
,n
,s,o,O,g
,n
Q
何とかインタラクティブな出力を得たいです。
$ ed
a
hello
world
.
,n
1 hello
2 world
,s,o,O,g
,n
1 hellO
2 wOrld
Q
$
期待ではなく
$ cat helloworld | ed
1 hello
2 world
1 hellO
2 wOrld
$
おそらく、サードパーティのユーティリティを使用してこれは可能ですか?よろしくお願いします!
編集する:やる気を追加する必要があると思いました。いくつかのサンプル編集セッションを作成し、これをscript(1)
。長い編集セッション(さらに悪い)
ベストアンサー1
わかりました。
awk '{ print; system("sleep 0") }' edscript | tee /dev/tty | ed
または以下なしtee
:
awk '{ print >"/dev/stderr"; print | "ed"; system("sleep 0") }' edscript
print >"/dev/stderr"
システムで機能しない場合は使用できますprint | "cat >&2"
。
そしてgnu sed
:
sed -u -n -e 'p;w /dev/stderr' -e 's|.*||e' edscript | ed
同様に効果的な別の方法:
使用split
を分割することです。スクリプトの編集各行:
split -l1 edscript
xaa
その後、...xab
動作するのと同じ結果が出ますxah
。
その後、次の部品を使用できます。
for i in x*; do awk '{ print >"/dev/stderr"; print }' $i; done | ed
または
for i in x*; do sed -n -e 'p;w /dev/stderr' $i; done | ed
期待される結果を得るために。だからあなたはrm x*
...