将 CSV 拆分为以其中一列命名的文件
我有这样的 CSV:
apple,file1.txt
banana,file1.txt
carrot,file2.txt
如何才能将左列中的所有项目放入以右列中的项目命名的文件中?例如 file.txt
将包含此列表:
apple
banana
到目前为止,我有这个:
while read line
do
firstcolumn=$(echo $line | awk -F ",*" '{print $1}')
secondcolumn=$(echo $line | awk -F ",*" '{print $2}')
done < Text/selection.csv
I have CSVs like this:
apple,file1.txt
banana,file1.txt
carrot,file2.txt
How can I get it to place all of the items from the left column into files named with the items in the right column? E.g. file.txt
would contain this list:
apple
banana
So far, I have this:
while read line
do
firstcolumn=$(echo $line | awk -F ",*" '{print $1}')
secondcolumn=$(echo $line | awk -F ",*" '{print $2}')
done < Text/selection.csv
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
使用 awk 的一种方法:
One way using
awk
:这应该有效 -
测试:
更新:
你也可以这样做 -
This should work -
Test:
Update:
You can also do something like this -
纯 Bash 并假设所有目标文件均为空或不存在:
Pure Bash and under the assumption that all target files are empty or non-existing:
sed 喜欢这个东西...
sed "s%\(.*\),\(.*\)%echo \1 >> \2 %" inputfile.txt |嘘
sed loves this stuff...
sed "s%\(.*\),\(.*\)%echo \1 >> \2 %" inputfile.txt | sh