このシェル スクリプトをまとめて、次の 2 つのことを行います。
- データ ファイルの区切り文字を変更します (この場合は「::」を「,」に変更します)。
- 必要な列を選択して、新しいファイルに追加します
それは機能しますが、これを行うためのより良い方法が必要です。特に、各行を配列に分解するための代替方法を見つけたいと思っています。コマンド ライン引数を使用する方法は適切ではないようです。どんなコメントでも大歓迎です。
# Takes :: separated file as 1st parameters
SOURCE=$1
# create csv target file
TARGET=${SOURCE/dat/csv}
touch $TARGET
echo #userId,itemId > $TARGET
IFS=","
while read LINE
do
# Replaces all matches of :: with a ,
CSV_LINE=${LINE//::/,}
set -- $CSV_LINE
echo "$1,$2" >> $TARGET
done < $SOURCE