ログファイルから^M文字を削除する

ログファイルから^M文字を削除する

ログファイルから^ M文字を削除します。

私のスクリプトはプログラムの出力をログファイルにリダイレクトします。マイログファイルの出力には、いくつかの^ M(改行)文字が含まれています。実行時に削除する必要があります。

私のコマンド:

$ java -jar test.jar >> test.log 

test.log持っている:

起動スクリプト...^ M起動スクリプト...初期化

ベストアンサー1

スタンドアロンファイル変換

次のコマンドを実行すると:

$ dos2unix <file>

<file>すべての^ M文字が削除されます。<file>そのままにするには、dos2unix次のように実行します。

$ dos2unix -n <file> <newfile>

コマンドの出力を解析します。

パイプラインを介してコマンドチェーンの一部として実行する必要がある場合は、必要な数のツール(たとえば、trまたは)を使用できます。sedawkperl

ティー

$ java -jar test.jar | tr -d '^M' >> test.log

sed

$ java -jar test.jar | sed 's/^M//g' >> test.log

アッ

$ java -jar test.jar | awk 'sub(/^M/,"")' >> test.log

真珠

$ java -jar test.jar | perl -p -e 's/^M//g' >> test.log

^Mと入力してください。

入力時に必ず^M次のいずれかの方法で入力してください。

  1. Control++の代わりに++で。vMShift6M
  2. バックスラッシュrは(\r)です。
  3. 8進数(\015)で表されます。
  4. 16進数(\x0D)で表されます。

これはなぜ必要ですか?

これは、^MWindowsプラットフォームで行末の終了を実行する方法の一部です。各行はキャリッジリターンと改行文字で終わります。

Unixシステムでは、行末は改行文字でのみ終了します。

  • newline= 0x0Ahex、として作成されます\n
  • 0x0D16進キャリッジリターン文字=とも呼ばれます\r

はい

.odhexdumpは、キャリッジリターン+改行文字で終わる行を含むサンプルファイルです。

$ cat sample.txt
hi there
bye there

hexdump+を使って見ること\rができます\n

$ hexdump -c sample.txt 
0000000   h   i       t   h   e   r   e  \r  \n   b   y   e       t   h
0000010   e   r   e  \r  \n                                            
0000015

または16進数で0d+ 0a

$ hexdump -C sample.txt 
00000000  68 69 20 74 68 65 72 65  0d 0a 62 79 65 20 74 68  |hi there..bye th|
00000010  65 72 65 0d 0a                                    |ere..|
00000015

これを実行してくださいsed 's/\r//g'

$ sed 's/\r//g' sample.txt |hexdump -C
00000000  68 69 20 74 68 65 72 65  0a 62 79 65 20 74 68 65  |hi there.bye the|
00000010  72 65 0a                                          |re.|
00000013

sedその役割が削除されたことを確認できます0d

変換せずにファイルを表示するには^ Mを使用しますか?

はい、これを行うために使用できますvimfileformat上記のようにファイルを変換する効果をvimで設定することも、viewでファイル形式を変更することもできますvim

ファイル形式の変更

:set fileformat=dos
:set fileformat=unix

短縮表記法も使用できます。

:set ff=dos
:set ff=unix

あるいは、ビューのファイル形式のみを変更することもできます。このアプローチは非破壊的です。

:e ++ff=dos
:e ++ff=unix

^Mここで私がファイルを開くのsample.txtを見ることができますvim

           vim DOS #1 ss

ビューからファイル形式を変換します。

           vim DOS SS #2

ファイル形式に変換した後の様子は次のとおりですunix

           vim DOS SS #3

引用する

おすすめ記事