テキストファイルから特定の列を抽出する

テキストファイルから特定の列を抽出する

次の形式のaboot行が10,000を超えるテキストファイルがあります。

field1 field2 field3 field4 field5 ... fieldX

次のように変換する必要があります。

field1,field2,field4,field3,field5 to fieldX

最後のフィールドには、field5から行末までのすべての内容を含める必要があります。最終出力はcsvファイルにエクスポートする必要があります。

だから:

123 abc XYZ qwe Abcd Efgh Iklmno Pqr Stu

出力は次のようになります。

123,abc,qwe,XYZ,Abcd Efgh Iklmno Pqr Stu

これは私が望む出力を得るために使用するものです。

awk '{printf $1 "," $2 "," $4 "," $3 ",";{for(i=5; i<NF; i++) printf "%s",$i OFS; if(NF) printf "%s",$NF; printf ORS}}' file.txt > file1.txt

(echo "Heading1,H2,H3,H4,H5" ; cat file1.txt) > file.csv

必要な出力は、各項目の最後に新しい行を生成することです。理由は不明です。私は通常、awkとUnixに初めて触れました。どんな助けをいただきありがとうございます。

答え1

ここで解決策を見つけましたawkは改行文字を印刷しません

AWK の ORS (Output Record Separator) 変数はデフォルトで "\n" に設定され、各行の後に印刷されます。

関連情報