質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
bash

bash(Bourne-again-Shell)は sh(Bourne Shell)のインプリメンテーションに様々な機能が追加されたシェルです。LinuxやMac OS XではBashはデフォルトで導入されています。

シェルスクリプト

シェルスクリプトは、UNIX系のOSもしくはコマンドラインインタプリタ向けに記述されたスクリプト。bash/zshといったシェルによって実行されるため、このように呼ばれています。バッチ処理などに使用されており、テキストファイルに書かれた命令を順に実行します。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Ubuntu

Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

Q&A

解決済

2回答

3846閲覧

scriptコマンドで削除した文字を残したくない

defeatist

総合スコア35

bash

bash(Bourne-again-Shell)は sh(Bourne Shell)のインプリメンテーションに様々な機能が追加されたシェルです。LinuxやMac OS XではBashはデフォルトで導入されています。

シェルスクリプト

シェルスクリプトは、UNIX系のOSもしくはコマンドラインインタプリタ向けに記述されたスクリプト。bash/zshといったシェルによって実行されるため、このように呼ばれています。バッチ処理などに使用されており、テキストファイルに書かれた命令を順に実行します。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Ubuntu

Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

1グッド

1クリップ

投稿2019/02/05 17:55

編集2019/02/06 03:57

scriptコマンドで取得したtypescriptから、制御文字とカラーコードを除去したものをファイルに出力させても、バックスペースで削除した文字が残ったままになるので、削除した文字を残させない(記録させない)方法を教えてください

#前提条件

  • 英語と日本語を記録したい

#試したこと

bash

1script 2echo hello wro 3 ↑ここでバックスペースを2回入力した後、orldと入力 4exit 5cat typescript | sed -r "s/[\0x08]|[\0x1B]|([K)|\x1B[([0-9]{1,2}(;[0-9]{1,2})*)?m//g" | col > scriptlog.log

typescript

echo hello wroorld

scriptlog.log

echo hello wroorld

ubuntu 18.04.1 LTS (Bionic Beaver)
windows Version 10.0.17134.523

set0gut1👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

バックスペースを適切に処理するのは、col-bオプションを付ければいいです。

#追記

Bash

1[user@host tmp]$ LANG=C script 2Script started, file is typescript 3[user@host tmp]$ echo hello world 4hello world 5[user@host tmp]$ exit 6exit 7Script done, file is typescript 8[user@host tmp]$ cat -v typescript 9Script started on Wed Feb 6 11:42:47 2019 10[user@host tmp]$ echo hello wro^H ^H^H ^Horld^M 11hello world^M 12[user@host tmp]$ exit^M 13exit^M 14 15Script done on Wed Feb 6 11:43:00 2019 16[user@host tmp]$ col -b < typescript | cat -v 17Script started on Wed Feb 6 11:42:47 2019 18[user@host tmp]$ echo hello world 19hello world 20[user@host tmp]$ exit 21exit 22 23Script done on Wed Feb 6 11:43:00 2019 24[user@host tmp]$

投稿2019/02/06 01:17

編集2019/02/06 02:47
otn

総合スコア84499

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

otn

2019/02/06 01:49

あと、sedで、\0x08 \0x1B は間違い。0 が余計。だけど、\x08をここで削除したら、col -b が無意味か。
defeatist

2019/02/06 02:38

`cat typescript | col -b > scriptlog.log`を実行したところ、`echo hello wrKorld`と出力されました
otn

2019/02/06 02:49

バックスペースを2回打ってないのでは?元のファイルにバックスペース入ってますか?
defeatist

2019/02/06 03:53

試行内容であるhello worldについては`LANG=C script`とすることで、目標を達成できました。ありがとうございます。ここで、条件の後付けとなり申し訳ないのですが、英語だけでなく日本語も扱う予定で、`LANG=C`を使用すると日本語が使えなくなるので、`LANG=C`を使用しない方法を教えていただけないでしょうか?
otn

2019/02/06 07:03

これは、scriptの日本語開始終了メッセージが、cat -v すると読め無くなるので、そのために入れただけです。特にLANG=Cにする必要はないです。
defeatist

2019/02/06 07:39

では前言撤回させていただきます。 `cat -v typescript`を実行すると`echo hello wro^H^[[K^H^[[Korld^M`と出力され、`col -b < typescript | cat -v`を実行すると`echo hello wrKorld`と出力されます。
otn

2019/02/06 08:01 編集

一旦削除
otn

2019/02/06 08:16

失礼しました。LANGが複数バイト文字になっていると、バックスペースで ^[[K も出力されるようですね。 とりあえず、TERM=dumb screen と、エスケープシーケンスのない端末として使うとこの点に関しては大丈夫ですが、何か不都合があるかも。 col -b に頼らないでスクリプト書いた方がいい気がしてきました。
defeatist

2019/02/06 14:16

cat typescript | sed -r "s/[\x1b][K|\x1B[([0-9]{1,2}(;[0-9]{1,2})*)?m//g" | col -b > scriptlog.logで目標を達成できました。ありがとうございます。
guest

0

バックスペースで削除した文字が残ったままというのが私の環境では再現できないんですが、質問の通りの状況だとすると最後の行を次のようにしてみてはどうでしょう。

cat typescript | perl -pe 'while(/s/.\b//){}' | col > scriptlog.log

投稿2019/02/05 19:50

KojiDoi

総合スコア13671

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

otn

2019/02/06 01:55

> 私の環境では再現できないんですが、 cat typescript しているのでは? cat -v typescript してください。
defeatist

2019/02/06 14:33

ご回答ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問