gpt4 book ai didi

linux - 如何在 bash 脚本中用逗号分割列表

转载 作者:太空狗 更新时间:2023-10-29 12:12:33 26 4
gpt4 key购买 nike

我试图读取一个 csv 文件并用逗号分割数据。

我用过

IFS=, list=($line)
for word in ${list[@]}; do
echo $word
done

根据逗号拆分 csv 记录,效果很好。

问题是当我在 csv 中有一个包含逗号的带引号的字符串时

Name, "Oct 2, 2015 at 1:06 PM", Superman

在这种情况下它返回

Name
"Oct 2
2015 at 1:06 PM"
Superman

我想要

Name
"Oct 2, 2015 at 1:06 PM"
Superman

如何解决?

最佳答案

在纯 bash 中没有一个好的方法来做到这一点,你不能使用 cut 来做到这一点,这也不尊重引号。

不过,有一些很好的命令行实用程序可以做到这一点。例如,Fedora 有一个 csv 包,它提供了一个 csv 命令,它执行与 cut 相同的操作,但尊重引号:

[james@marlon ~] $ echo '1,"3,w",4' | csv --col 2
"3,w"

它还提供了一个包ocaml-csv,它为您提供了具有类似功能的csvtool:

[james@marlon ~] $ echo '1,"3,w",4' | csvtool col 2 -
"3,w"

这些也很可能在其他发行版中可用。

关于linux - 如何在 bash 脚本中用逗号分割列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37323299/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com