AWKコマンドを使用してCSV形式で出力

AWKコマンドを使用してCSV形式で出力

入力.txtファイル形式は次のとおりです。

Name  age  number       address
mark  23   89756342192   chennai
david 40   70214789023   delhi

以下の例に従ってTXTファイルからCSVファイルを作成するにはどうすればよいですか?ありがとうございます。

mark,23,89756342192,chennai
david,40,70214789023,delhi

以下は私が書いたスクリプトです

printrep.sh

#!/bin/sh
Headers=["Name","Age","Phone","Address"];
count=$(wc -l < $name)
i=0;
echo "Headers[0] + ' , ' +Headers[1]+ ' , ' +Headers[2] + ' , ' +Headers[3] + ' , ' +Headers[4]";
while [ $i -lt $count ]
do
        read line | awk FS=' ' OFS="," '{print $0}'
        i=`expr $i + 1`
done

上記のコードは出力を表示しません。私は何が間違っているのかわかりません。助けてください。私はシェルスクリプトの初心者です。

ベストアンサー1

bash:IFS変数はここで重要です。これはbash固有の配列の使用です。read -a

IFS=,
while IFS=$' \t' read -ra fields; do echo "${fields[*]}"; done < input.txt

awk:非常に簡潔:$1=$1出力フィールド区切り文字を使用して現在の行を書き換えて1その行を印刷します。

awk '{$1=$1}1' OFS=, input.txt

ミラー:入力ファイルが必要です。いいえ空の行があります。 「かわいい印刷」形式からcsvに変換中です。

mlr --p2c cat input.txt

また、入力のコンマを正しく処理します。

$ cat input.txt
Name  age  number        address
mark  23   89756342192   chennai
david 40   70214789023   delhi
alice 24   42            paris,texas

$ mlr --p2c cat input.txt
Name,age,number,address
mark,23,89756342192,chennai
david,40,70214789023,delhi
alice,24,42,"paris,texas"

おすすめ記事