我想在 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 中实现这一点?
最佳答案
使用 subshell 替换来解析单词会撤消您将空格放在一起所做的所有工作。
试试吧:
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/