我放在一起這個shell腳本做兩件事情:爆炸到陣列
- 變化(在這種情況下,「::」到「」)在數據文件中的分隔符
- 選擇列我想要將它們追加到一個新文件中
它的工作原理,但我想要一個更好的方法來做到這一點。我特別想找到一種將每行分解爲數組的另一種方法。使用命令行參數似乎不是要走的路。任何評論歡迎。
# 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
有一定是更好的標題 - 請更新您的標題,因此是相關的。 (現在爲-1,因爲前面提到的原因,但稍後可以很容易地修改) – 2012-06-15 03:35:46
將重定向放在循環外部的'$ TARGET',可能是'> $ TARGET'。然後你可以在循環之前丟失'touch'。您的標題行也需要包含引號('echo「#userID,itemId」')。 –