ed(1) スクリプト実行時の標準入力エコー

ed(1) スクリプト実行時の標準入力エコー

次の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*...

おすすめ記事