bash- \ x0d \ x20が行を消去するのはなぜですか

フルーツ

これはgeditエディターからのビューです: ここに画像の説明を入力してください

とvimエディターからのビュー: ここに画像の説明を入力してください

次に、grepを試行します。Togの代わりにLogを配置すると、grepは正常に実行されましたが、出力が破損しています。

[xiaobai@xiaobai grep]$ grep  Tog test
[xiaobai@xiaobai grep]$ grep  Log test
                               Dtring.valueOf
[xiaobai@xiaobai grep]$ 

そして、私はファイルを猫にします、それも壊れています:

[xiaobai@xiaobai grep]$ cat test 
                               Dtring.valueOf
[xiaobai@xiaobai grep]$ 

だから私はhexdumpを使用します:

[xiaobai@xiaobai grep]$ hexdump -C test 
00000000  4c 6f 67 2e 64 28 22 6d  75 73 69 63 22 2c 20 22  |Log.d("music", "|
00000010  4e 41 56 49 47 41 54 4f  52 3a 20 22 20 2b 20 53  |NAVIGATOR: " + S|
00000020  74 72 69 6e 67 2e 76 61  6c 75 65 4f 66 0d 20 20  |tring.valueOf.  |
00000030  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000040  20 20 20 20 20 20 20 20  20 20 20 20 20 44 0d 0a  |             D..|
00000050
[xiaobai@xiaobai grep]$ 

私はそれを絞り込みます:

[xiaobai@xiaobai grep]$ cat test3
                               D
[xiaobai@xiaobai grep]$ hexdump -C test3
00000000  61 0d 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |a.              |
00000010  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000020  20 44 0d 0a                                       | D..|
00000024
[xiaobai@xiaobai grep]$ echo -e '\x61'
a
[xiaobai@xiaobai grep]$ echo -e '\x61\x0d'
a
[xiaobai@xiaobai grep]$ echo -e '\x61\x0d\x20'

[xiaobai@xiaobai grep]$ echo -e '\x61\x0d\x20\x62'
 b

ご覧のとおり、\ x20バイトを1バイト追加すると「a」が消去されます。

だから私の質問は、なぜそれが起こっているのか、そしていくつかのファイルの事前の知識なしにこれを取り除くにはどうすればいいですか?例えばgrep -r?

ステファン・チャゼラス

ASCIIのコード0〜31の文字は制御文字です。ターミナルに送られるとき、それらは特別なことをするために使用されます。たとえば、\a(BEL、0x7)は端末のベルを鳴らします。\b(BS、0x8)カーソルを後方に移動します。\n(LF、0xa)はカーソルを1行下に移動し、\t(TAB 0x9)はカーソルを次のタブに移動します。

\r (CR、0xd)カーソルを最初の列に移動します。

ターミナルのシェルプロンプトで実行する場合:

printf 'foo\nbar\n'

printfに書き込むfoo\nbar\n/dev/tty<something>、そのデバイスのtty行の規律はそれをに変換しfoo\r\nbar\r\nます。これが。のbar次の行に表示される理由ですfoo

printf 'foo\rbar\n'

ターミナルをで上書きfoobarます。

あなたのファイルは、制御文字が含まれている場合は、どちらかそれらを削除するか、またはそれらを(例えばテキスト表現与えることができる^Mか、\rあなたが彼らの存在を確認したい場合はCRの0xd文字のために)。

ただし、LF文字とTAB文字についてはこれを実行したくない場合があります。そう:

LC_ALL=C tr -d '\0-\10\13-\37\177' < file # to remove them

cat -v < file # to display as ^M

sed -n l < file # to display as \r (also converts TAB to \t)
                # and marks the end of lines with $

それらsedcat1つは非ASCII文字も変換することに注意してください代わりに次のことができます。

LC_ALL=C sed "$(printf 's/[^\t -\176\200-\377]/^&/g')" < file |
  LC_ALL=C tr '\0-\10\13-\37\177' '@-HK-_?'

ASCII制御文字(TABとLFを除く)のみを^X視覚的な形式にsed変換します(ただし、すべての実装がNUL文字を含む入力ファイルをサポートしているわけではないことに注意してください)。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

bash- \ x0d \ x20が行を消去するのはなぜですか

分類Dev

文字の認識&#x0D; JavaDOMで

分類Dev

SSISで&#x0Dを処理する

分類Dev

Bashのパス名に\ x20の代わりに何を書くべきですか?

分類Dev

エコー\ 0x0Aのときに追加の\ x0Dが追加されます

分類Dev

Python CSVは&#x0Dで示される新しい行を削除します

分類Dev

Unixでは\ x0D \ x0Aをスペースに置き換えてください。sed

分類Dev

OS Xがタブごとに2つのbashプロセスを作成するのはなぜですか?

分類Dev

bash -x script.shで起動したときに、bashスクリプトが「+ '[' 0 -le 1 ']'」を出力するのはなぜですか?

分類Dev

「if [0]」がbashスクリプトで「then」ステートメントを実行するのはなぜですか?

分類Dev

「if [0]」がbashスクリプトで「then」ステートメントを実行するのはなぜですか?

分類Dev

env x =&#39;(){:;};とは コマンド&#39; bashは実行し、なぜそれが安全でないのですか?

分類Dev

ERRトラップの0を終了すると、bashがstdoutを抑制するのはなぜですか?

分類Dev

なぜBashは起動時に突然多くの `declare -x`コマンドを出力するのですか?

分類Dev

bash "read -t 0"が入力を認識しないのはなぜですか?

分類Dev

なぜbashは消去された行を重複して保持するのですか?

分類Dev

$ 0が-bashに設定されているのはなぜですか?

分類Dev

Bash:[[zero -eq 0]]がtrueと評価されるのはなぜですか?

分類Dev

$ 0が-bashに設定されているのはなぜですか?

分類Dev

$ 0が-bashに設定されているのはなぜですか?

分類Dev

次のコードの出力がx = 0 x = 20であるのはなぜですか?

分類Dev

env x = '(){:;};とは command'bash doと、なぜそれが安全でないのですか?

分類Dev

bashREPLで `echo $ 0`を実行すると、bash実行可能ファイルの名前のみが返されるのに、zshではzsh実行可能ファイルへの絶対パスが返されるのはなぜですか?

分類Dev

(x ^ 0 === x)がtrue / falseではなくxを出力するのはなぜですか?

分類Dev

コマンドがステータス> 0で終了すると、bash evalが0を返すのはなぜですか?

分類Dev

エコー「$ 0」がスクリプト名をbashで出力しないのはなぜですか?

分類Dev

1を終了するPython関数に対してbashエコーが0を出力するのはなぜですか

分類Dev

未設定の変数を配列インデックスとして使用すると、Bashで要素0が返されるのはなぜですか?

分類Dev

この行が1行ではなくすべてを削除するのはなぜですか。Crontab-Bash-Sed

Related 関連記事

  1. 1

    bash- \ x0d \ x20が行を消去するのはなぜですか

  2. 2

    文字の認識&#x0D; JavaDOMで

  3. 3

    SSISで&#x0Dを処理する

  4. 4

    Bashのパス名に\ x20の代わりに何を書くべきですか?

  5. 5

    エコー\ 0x0Aのときに追加の\ x0Dが追加されます

  6. 6

    Python CSVは&#x0Dで示される新しい行を削除します

  7. 7

    Unixでは\ x0D \ x0Aをスペースに置き換えてください。sed

  8. 8

    OS Xがタブごとに2つのbashプロセスを作成するのはなぜですか?

  9. 9

    bash -x script.shで起動したときに、bashスクリプトが「+ '[' 0 -le 1 ']'」を出力するのはなぜですか?

  10. 10

    「if [0]」がbashスクリプトで「then」ステートメントを実行するのはなぜですか?

  11. 11

    「if [0]」がbashスクリプトで「then」ステートメントを実行するのはなぜですか?

  12. 12

    env x =&#39;(){:;};とは コマンド&#39; bashは実行し、なぜそれが安全でないのですか?

  13. 13

    ERRトラップの0を終了すると、bashがstdoutを抑制するのはなぜですか?

  14. 14

    なぜBashは起動時に突然多くの `declare -x`コマンドを出力するのですか?

  15. 15

    bash "read -t 0"が入力を認識しないのはなぜですか?

  16. 16

    なぜbashは消去された行を重複して保持するのですか?

  17. 17

    $ 0が-bashに設定されているのはなぜですか?

  18. 18

    Bash:[[zero -eq 0]]がtrueと評価されるのはなぜですか?

  19. 19

    $ 0が-bashに設定されているのはなぜですか?

  20. 20

    $ 0が-bashに設定されているのはなぜですか?

  21. 21

    次のコードの出力がx = 0 x = 20であるのはなぜですか?

  22. 22

    env x = '(){:;};とは command'bash doと、なぜそれが安全でないのですか?

  23. 23

    bashREPLで `echo $ 0`を実行すると、bash実行可能ファイルの名前のみが返されるのに、zshではzsh実行可能ファイルへの絶対パスが返されるのはなぜですか?

  24. 24

    (x ^ 0 === x)がtrue / falseではなくxを出力するのはなぜですか?

  25. 25

    コマンドがステータス> 0で終了すると、bash evalが0を返すのはなぜですか?

  26. 26

    エコー「$ 0」がスクリプト名をbashで出力しないのはなぜですか?

  27. 27

    1を終了するPython関数に対してbashエコーが0を出力するのはなぜですか

  28. 28

    未設定の変数を配列インデックスとして使用すると、Bashで要素0が返されるのはなぜですか?

  29. 29

    この行が1行ではなくすべてを削除するのはなぜですか。Crontab-Bash-Sed

ホットタグ

アーカイブ