Linux CSV文件输出重新格式化

Linux CSV文件输出重新格式化,linux,bash,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

创建读取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"

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

 cat "/file-path/details.csv" | tr ',' ' '
如果要删除第一行,可以使用sed

 sed -i 1d $'/file-path/details.csv'
如果你想跳过第一行,用tail

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

比较输入csv和期望的输出,我猜第一个字段(账号?)在适当的位置用连字符连接,第三个字段(过账日期?)用零填充重新格式化。但是我不知道所需输出的第一行中的
233420
部分和
209299
部分来自何处。您是对的,第一个字段是账号,应该连字符,日期字段和交易金额字段合并在一起,并填入零感谢您的回复,但我的问题是如何计算
233420
209299
,以及下面几行中的数字。我无法通过使用提供的CSV文件计算这些数字。此外,您如何处理CSV中的字段
NONREF
?您能告诉我们获得金额数字的算法或公式吗?
 tail -n +2 /file-path/details.csv  | tr ',' ' '