我放在一起这个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”')。 –