印刷時にテキストの順序がめちゃくちゃです。

印刷時にテキストの順序がめちゃくちゃです。

ファイルのデータ構造を変更するために自動化されたプロセスを実行しており、約1年間問題なく実行されました。私は失敗し始め、問題の範囲をファイルの日付フィールドの1つに絞り込みました。問題が発生する前と後のファイルは同じように見えますが、実際には何かが進んでいます。ファイルを別のテキストで画面に印刷しようとすると、順序が混乱します。ファイルに隠された文字が見つかりませんが、明らかに1つがあると思います。前にこれを見た人はいますか?

ここに例があります。疑わしいフィールドを除くファイルのすべてのエントリを削除し、古いファイルを新しいファイルと比較しました。

$ cat old.file
16-JUN-2015
15-JUN-2015
$ cat old.file | awk '{print "a" $1 "b"}'
a16-JUN-2015b
a15-JUN-2015b
$ for line in `cat old.file`;do echo "a${line}b";done
a16-JUN-2015b
a15-JUN-2015b
$
$
$ cat new.file
23-JUN-2015
16-JUN-2015
$ cat new.file | awk '{print "a" $1 "b"}'
b23-JUN-2015
b16-JUN-2015
$ for line in `cat new.file`;do echo "a${line}b";done
b23-JUN-2015
b16-JUN-2015

私はRed Hat ELサーバーを実行しています。ありがとう、

ベストアンサー1

とにかくWindowsスタイルの行末が表示されますCRLF \x0D\xOA \r\n

printf 'xyz\r\n' >file; cat file | awk '{print "a" $1 "b"}'

出力bxyz


cat file | sed -n l 

出力xyz\r$-$行の終わりを示します。


ペアで不要な\rsをフィルタリングできます。\r\nawk

cat file | awk -vRS='\r?\n' 1 | sed -n l

出力xyz$


この問題を解決するには:

cat file | awk -vRS='\r?\n' 1 > file.fixed

なぜこのような問題が発生しますか?

cat file端末に出力が表示されると、Carriage \r-Returnキーが意図したとおりに動作します。馬車に戻る完全に左に。端末の場合、これはテキスト挿入ポイントが画面の左端に移​​動することを意味します。これは\r手動タイプライター時代から派生した用語と概念です。輸送以前は返品左マージン(手動レバーを介して)左マージンに達すると、ローラーは用紙を1行下に移動します。演奏論文1ワイヤー

ターミナルで以前に列1にあったすべての項目は、b後で\r上書きされますba

おすすめ記事