我正在尝试将 CSV 的多行输出转换为 Bash 中的一行。
我的 CSV 文件如下所示:
hi,bye
hello,goodbye
最终目标是让它看起来像这样:
"hi/bye", "hello/goodbye"
这就是我目前所处的位置:
INPUT=mycsvfile.csv
while IFS=, read col1 col2 || [ -n "$col1" ]
do
source=$(awk '{print;}' | sed -e 's/,/\//g' )
echo "$source";
done < $INPUT
输出位于每一行,我可以将 , 更改为/,但我不确定如何将输出放在带有引号的一行上。
我尝试过开始:
source=$(awk 'BEGIN { ORS=", " }; {print;}'| sed -e 's/,/\//g' )
但这仅输出最后一行,并省略第一个 hi/bye:
hello/goodbye
有人可以帮助我吗?
最佳答案
只需在 awk 中完成整个事情(大部分)。最终的 sed 只是在这里修剪一些尾随的多余内容并在末尾注入(inject)换行符:
< mycsvfile.csv awk '{print "\""$1, $2"\""}' FS=, OFS=/ ORS=", " | sed 's/, $//'
关于bash - 带有双引号输入行的多行 CSV : output on a single line,,使用不同的分隔符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43484042/