追加列を追加するときのAWK奇妙な出力動作

追加列を追加するときのAWK奇妙な出力動作

以下を含むfile.csvがあります。

ID,FN,LN,NUM
576,Pra,Mar,3
688,India,Desa,3
645,Ami,Path,5
245,Me,Yo,4

すべての列フィールドを印刷しようとすると正常に動作します。

awk '{印刷 $1,$2,$3,$4}' FS=, OFS=, file.csv

ID,FN,LN,NUM
576,Pra,Mar,3
688,India,Desa,3
645,Ami,Path,5
245,Me,Yo,4

ただし、最後に追加の列を追加しようとすると機能しません。

awk '{print $1,$2,$3,$4,"R"}' FS=, OFS=, file.csv

,R,FN,LN,NUM
,R576,Pra,Mar,3
,R688,India,Desa,3
,R645,Ami,Path,5
245,Me,Yo,4,R

私が望む出力は

ID,FN,LN,NUM,R
576,Pra,Mar,3,R
688,India,Desa,3,R
645,Ami,Path,5,R
245,Me,Yo,4,R

私は何が間違っていましたか?

ベストアンサー1

入力ファイルにキャリッジ戻り/改行の終わりがある場合は、これを行います。

これはviの外観です(明確にするためにリストモードが必要な場合があります):

Wed Mar 30 18:53:01 EDT 2016
ID,FN,LN,NUM^M
576,Pra,Mar,3^M
688,India,Desa,3^M
645,Ami,Path,5^M
245,Me,Yo,4^M
Wed Mar 30 18:53:01 EDT 2016
ID,FN,LN,NUM^M,R
576,Pra,Mar,3^M,R
688,India,Desa,3^M,R
645,Ami,Path,5^M,R
245,Me,Yo,4^M,R

2番目の例では、^M文字は「、R」の前にあるため、その文字は行の先頭に印刷されます。

これを見るとウィム代わりに、同様の内容が表示されます。

さまざまな方法で行末を変換できます。

  • 存在するウィム、と入力するとステータスバーcontrolGに「[dos]」と表示され、「:set」(Enter)と入力すると出力に「dos」と表示されます。次のように変換できます。
    :ff=UNIXに設定
    :うわー!
  • コマンドラインにはおそらくありますdos2unix

追加資料:

おすすめ記事