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

我想在 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 (如我的回答)让它们并行工作。当然,这仅在文件中有很多行时才重要。

https://stackoverflow.com/questions/7718307/

相关文章:

linux - 如何在 Linux 中查看日志文件并在查看时应用自定义过滤器?

linux - 计算一个单词在文件中出现的次数

python - 如何用python替换像文本一样的sed?

php - 如何通过 ssh 检查 ubuntu 服务器上是否存在 php 和 apache

c - 如何检查存储在变量中的给定文件描述符是否仍然有效?

linux - 如何使用 Ansible 等待服务器重启?

linux - 我可以使用 awk 将所有小写字母转换为大写吗?

linux - 基于shell中正则表达式的颜色突出显示输出

linux - 如何使用 linux shell 脚本删除 ^[ 和文件中的所有转义序列

ruby - 如何在 linux (ubuntu) 上更新 ruby​​?