我把这个 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