我正在嘗試解析期望寫入螢幕的命令的輸出。它具有透過移至原點控制序列分隔的資料(對於 VT220,ESC[1;1H)。我只需要最後一部分(即最後一次移動到原點之後)。
我嘗試過多種方法(主要是 awk 和 sed),但問題始終是控制序列的某些部分具有特殊含義(對於程序,而不僅僅是 shell),並且當我替換 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 的二進位檔案編輯器
如果您需要更具體的答案,我需要更具體的程式範例