GNU/Linux >> Linux の 問題 >  >> Linux

Linux の「スクリプト」コマンドの出力をクリーンアップする方法

ファイルを表示したい場合は、出力を col -bp 経由で送信できます;これは制御文字を解釈します。その後、必要に応じて、less をパイプできます。

col -bp typescript | less -R

一部のシステムでは col ファイル名の引数を受け入れません。代わりに次の構文を使用してください:

col -bp <typescript | less -R

cat typescript | perl -pe 's/\e([^\[\]]|\[.*?[a-zA-Z]|\].*?\a)//g' | col -b > typescript-processed

perl への文字列入力の解釈を次に示します。 :

  • s/pattern//g 全体で置換を行うことを意味します (g オプションは、最初の置換で停止するのではなく、すべてを実行することを意味します) 入力文字列

正規表現パターンの解釈は次のとおりです:

  • \e 特殊な「エスケープ」制御文字 (ASCII 0x1A) に一致
  • () グループの始まりと終わり
  • | グループが N 個のパターンの 1 つに一致できることを意味します。ここで、N パターンは
    • [^\[\]] または
    • \[.*?[a-zA-Z] または
    • \].*?\a
  • [^\[\]] 手段
    • not 文字が [ である一連の NOT 文字に一致します と ]
  • \[.*?[a-zA-Z] 手段
    • [ で始まる文字列に一致 次に、貪欲でない .*? を実行します 最初の英字まで
  • \].*?\a 手段
    • ] で始まる文字列に一致 次に、貪欲でない .*? を実行します 「アラート(ベル)キャラクター」と呼ばれる特別なコントロールキャラクターを叩くまで

大量の script の場合 出力、perl スクリプトを繰り返しハッキングします。それ以外の場合は、優れたエディターを使用して手作業で編集してください。

script から制御文字を削除する既存の自動化された方法はほとんどありません。 特定の重要な瞬間 (ホストがその最初を待っていたときなど) に画面に表示されていたものを再現する方法で出力する ユーザー入力の文字)

たとえば、画面は Andrew $ 以外は空白である可能性があります rm /* と入力した場合 バックスペースを 12 回押しました (必要以上に)。最後に画面に表示される内容は、実行中のシェル、現在の stty によって異なります。 設定は (セッションの途中で変更する可能性があります) であり、おそらく他の要因も含まれます。

上記は、入力と出力を継続的にキャプチャする自動化された方法に適用されます。主な代替手段は、「スクリーン ショット」を撮るか、セッション中の適切なタイミングで画面をカット アンド ペーストすることです (これは、私がユーザー ガイドや日誌のメモなどのために行っていることです)。


Linux
  1. Linuxでファイルの名前を変更する方法

  2. LinuxでSuコマンドを使用する方法

  3. Linuxスクリプトコマンドを使用してターミナルセッションをキャプチャして出力する方法

  1. Linuxコマンドの出力を変数に割り当てる方法

  2. Linuxでユーザーがログインする前にコマンドを実行する方法は?

  3. コマンドまたはシェルスクリプトの出力がStdoutまたはStderrであるかどうかを確認する方法は?

  1. Linuxでコマンド出力をファイルに保存する方法

  2. Linuxコマンドのスクリプトを作成する方法

  3. Linuxコマンド出力をファイルに出力するには?