awkを使用して列を追加中に問題が発生しました。

awkを使用して列を追加中に問題が発生しました。

以下を使用してCSVファイルに列を追加しようとしています。

awk -F "," '{print $0"new_col"}' file.csv

しかし、私は次のようになります。

new_col8,0.405,0.101
new_col4,0.374,0.100
new_col23,0.342,0.100
new_col130,0.298,0.100

変える:

68,110,0.362,0.101,new_col
11,98,0.405,0.101,new_col
57,94,0.374,0.100,new_col
61,123,0.342,0.100,new_col
124,130,0.298,0.100,new_col

私もこれを試しました:

awk -F "," '{{$(NF+1)=",new_col"} print $0 }' file.csv

しかし、私は同じ結果を得ました!

すでにこの問題を経験している人はいますか?

ベストアンサー1

入力csvファイルはDOS形式です。 Microsoft DOS / Windowsは各行の末尾にキャリッジリターン文字(\r、、^MASCIIコード13)と改行文字(\nまたはASCIIコード10)を使用しますが、Linux / Unixは改行文字のみを使用します。^J

この問題を解決するには、次の手順を実行します。

$ dos2unix file.csv
dos2unix: converting file file.csv to Unix format ... 
$ awk '{print $0",new_col"}' file.csv

前のカンマを参照してくださいnew_col。それがなければ、の端に直接print接続されます。入力行をフィールドに分割するのではなく単にを使用するため、フィールド区切り文字()を表す必要はありません。new_col$0-F$0

おすすめ記事