linux - 如何用逗号而不是空格分割列表

标签 linux bash shell csv split

我想在 for foo in list 中用逗号 , 而不是空格 分割文本。假设我有一个 CSV 文件 CSV_File,其中包含以下文本:

Hello,World,Questions,Answers,bash shell,script
...

我使用以下代码将其拆分为几个单词:

for word in $(cat CSV_File | sed -n 1'p' | tr ',' '\n')
do echo $word
done

打印出来:

Hello
World
Questions
Answers
bash
shell
script

但我希望它用逗号而不是空格分隔文本:

Hello
World
Questions
Answers
bash shell
script

如何在 bash 中实现这一点?

最佳答案

使用 subshel​​l 替换来解析单词会撤消您将空格放在一起所做的所有工作。

试试吧:

cat CSV_file | sed -n 1'p' | tr ',' '\n' | while read word; do
    echo $word
done

这也增加了并行性。在您的问题中使用子 shell 会强制整个子 shell 过程完成,然后您才能开始迭代答案。管道到子 shell (如我的回答)让它们并行工作。当然,这仅在文件中有很多行时才重要。

关于linux - 如何用逗号而不是空格分割列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7718307/

相关文章:

linux - 如何在 sed 的输出中使用变量?

linux - 使用 ffmpeg 从 .h264 批量转换为 .avi

python - 通过 GMAIL SMTP 的 SVN 通知

使用 djvused 程序的 linux shell 脚本不工作

r - 如何将Shell变量引入R脚本?

excel - 如何使用shell脚本将结果保存在excel中的单独列中

linux - 从 .txt 文件中读取键值对并在 shell 脚本中使用

shell - C shell : How to execute a program with non-command line arguments?

c - 如何正确打印文件路径?

linux - 是否可以专门为 NIC 运行命令 "route -n"