対話中の対話型コマンドの出力の取得

対話中の対話型コマンドの出力の取得

私はプレーンテキストまたはHTMLを出力する辞書プログラムを持っており、出力を正規化するsdcvBashスクリプトを書いてプレーンテキストをsdcv書くときに単にstdoutを印刷するか、lynxHTMLを出力するときにフォーマットされたHTMLを印刷するために使用します。sdcv

そのために、sdcv MYWORD | myscript.sh分析結果をパイプラインに渡すことができるBashスクリプトを作成しようとしていますsdcv。問題は、sdcv2つの出力があり、最初の出力に基づいて2番目の出力をフォーマットする必要があることです。最初の出力後にsdcvユーザー入力が必要で、2番目の出力が印刷されます。

私は試してみましたが、FIRST_OUTPUT=$(tee /dev/tty)問題はこれがsdcv要求の最初の出力sdcvsdcv私の入力の2番目の出力をマージし、入力が入力されるまで何もアクセスできないことです。

どうやって進めますか?

ベストアンサー1

<html...たぶん、コマンドで始まり終わる一連の行をコマンド</html... にパイプすることもできますlynx(またはより良い方法もありますelinksw3m

良い:

#! /usr/bin/perl
while (<<>>) {
  if (!$inhtml && m{<html}i) {
    $inhtml = 1;
    open HTML, "|-", qw(elinks -dump);
  }

  print {$inhtml ? HTML : STDOUT}  $_;

  if ($inhtml && m{</html}i) {
    close HTML;
    $inhtml = 0;
  }
}

(そしてsdcv MYWORD | that-script

おすすめ記事