CSV文件输出重新格式化

时间:2019-10-23 19:49:23

标签: linux bash

创建一个读取CSV文件并重新格式化输出的脚本,该CSV文件有五列,但是运行脚本时我的预期输出结果应该是三列。合并了两列

这是CSV文件:

Account number (preferred / formatted),Customer reference,Posting date,Account currency,Transaction amount
750856653,233413,3/9/2019,USD,-1439.58
750856653,233431,3/9/2019,USD,-186.66
750856653,NONREF,3/9/2019,USD,14401.48

这是我的代码:

#!/bin/bash

input="/file-path/details.csv"
column -t -s: |
sed 's/ ,/,/g'
while IFS=',' read -r f1 f2 f3 f4 f5
do
echo "$f1 $f2 $f3 $f4 $f5 "
done < "$input"

这是我想要的输出:

750-85665-3 0000233420 090319000000209299
750-85665-3 0000233417 090319000000285615
750-85665-3 0000233426 090319000000239225

1 个答案:

答案 0 :(得分:0)

您可以使用tr。您用空格翻译逗号。

 cat "/file-path/details.csv" | tr ',' ' '

如果要删除第一行,可以使用sed

 sed -i 1d $'/file-path/details.csv'

如果要跳过第一行,请使用tail

 tail -n +2 /file-path/details.csv  | tr ',' ' '