画面への書き込みを想定するコマンドの出力を解析しようとしています。これには、move-to-origin 制御シーケンス (VT220 の場合ESC[1;1H) で区切られたデータがあります。必要なのは最後の部分 (つまり、最後の move-to-origin の後) だけです。
私はこれを複数の方法 (主に awk と sed) で試してみましたが、問題は常に、制御シーケンスの一部が特別な意味を持つ (シェルだけでなくプログラムに対しても) ため、tput の出力を置き換えるときにそれらを引用符で囲むことができないことです。
助言がありますか?
編集:
以下は解析対象の例です (ESCはエスケープ文字です)。
Page 1; line 1
Page 1; line 2
ESC[1;1HPage 2; line 1
Page 2; line 2
ESC[1;1HPage 3; line 1
Page 3; line 2
プログラムの実行後にターミナルに表示される以下の内容を取得したいと考えています。
Page 3; line 1
Page 3; line 2
答え1
問題に対処する最も簡単な方法:
- すべての制御シーケンスを 'uuencode -m v' または 'xxd' で変換します。
- これでawkで通常通りテキスト処理ができるようになりました
- 結局、「uudecode -o -」または「xxd -revert」で逆変換することになります。
代わりに以下を使用してください: bbe - バイナリファイル用のsedのようなエディタ
より具体的な回答が必要な場合は、より具体的なプログラムサンプルが必要です