AWKの奇妙な出力

AWKの奇妙な出力

csvファイルから列(UPC番号)を抽出し、ファイルの長さが14未満の場合は末尾にスペースを追加してみてください。しかし、出力の末尾に^ Mがあるのに削除する方法がわかりません。

このコマンドは、この列以外の列でも機能します。

awk -F, '{print $8}' $FILE | awk '{printf("%-14s\n", $0) }' > $TEMP/upc

vi出力:

861601000109^M

736040531685^M

猫出力:

 61601000109

 36040531685

答え1

ファイルがWindowsのテキストエディタで開かれて保存されている可能性があります。

UNIX ベースのシステムの行終端は、Windows の行終端とは異なります。

DOS / Windowsコンピュータで生成されたテキストファイルは、Unix / Linuxで生成されたファイルと行末が異なります。 DOS は改行と改行 ("\r\n") を行終端として使用し、Unix では改行 ("\n") のみを使用します。行末が正しく翻訳されるようにするには、WindowsとUnixコンピュータ間でファイルを転送するときに注意が必要です。

源泉

ファイルを読み取るときはcatEOL文字は表示されませんが、ファイル読み取りを使用するとviEOL文字が表示されます。

^Mおそらくファイルから削除する最も簡単な方法は、ストリームエディタを使用して文字をsed削除することです。^M次のコマンドを入力してください。% sed -e "s/^M//" filename > newfilename

と入力するには、を入力して^MからCTRL-Vを入力しますCTRL-M。つまり、CTRL キーを押しながら V と M を押し続けます。

関連情報