首页 > 解决方案 > CSV 文件不输出数据对齐不工作

问题描述

CSV 文件输出数据与右列不对齐。

Account number (preferred / formatted),Customer reference,Posting date,Account currency,Transaction amount
750856653,233420,3/9/2019,USD,-2092.99
750856653,233417,3/9/2019,USD,-2856.15
750856653,233426,3/9/2019,USD,-2392.25
750856653,233414,3/9/2019,USD,-1733.22
750856653,233424,3/9/2019,USD,-1850.31
750856653,233403,3/9/2019,USD,-1850.32
750856653,233413,3/9/2019,USD,-1439.58
750856653,233431,3/9/2019,USD,-186.66

脚本/代码:

#!/bin/bash
input="/home/users/dcapps/bank/Monthsal.csv"
sed 's/,/:,/g' Monthsal.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"

结果应如下所示:

Accountnumber Customerreference Postingdate  Accountcurrency TransactionAmt 
750856653      233420           3/9/2019           USD                2092.99
750856653      233417           3/9/2019           USD                2856.15

标签: linuxbashshell

解决方案


您想将 CSV 数据漂亮地打印为格式良好的人类表格吗?救援专栏:

$ column -s, -t input.csv
Account number (preferred / formatted)  Customer reference  Posting date  Account currency  Transaction amount
750856653                               233420              3/9/2019      USD               -2092.99
750856653                               233417              3/9/2019      USD               -2856.15
750856653                               233426              3/9/2019      USD               -2392.25
750856653                               233414              3/9/2019      USD               -1733.22
750856653                               233424              3/9/2019      USD               -1850.31
750856653                               233403              3/9/2019      USD               -1850.32
750856653                               233413              3/9/2019      USD               -1439.58
750856653                               233431              3/9/2019      USD               -186.66

(我看到你在你的脚本中使用它......不确定你用 sed 和添加/删除其他分隔符所做的其他事情是为了什么,或者那个 while 循环......)


推荐阅读