【发布时间】:2019-06-27 08:10:29
【问题描述】:
我有这个 CSV 文件:
Monday,linux,6,0.2
Tuesday,linux,0.25,0.2
Wednesday,linux,64,3
我创建了一个小脚本,允许我从我的 csv 中恢复信息 并像这样放置它们:
Day : Monday
OS : Linux
RAM : 6
CPU1 : 0.2
我的脚本是:
#!/bin/bash
awk -F'[ ,;|.]' 'FNR==0{next}
FNR>1 {
print "DAY : " $1;
print "OS :\n " $2
print "RAM :\n " $3
print "CPU1 :\n " $4
}' mycsvfile.csv
但结果是:
DAY : Tuesday
OS :
linux
RAM :
0
CPU1 :
25
DAY : Wednesday
OS :
linux
RAM :
64
CPU1
或者我想要:
DAY : Monday
OS : linux
RAM : 0.2
CPU 1 : 1
DAY : Tuesday
OS : linux
RAM : 0.25
CPU 1 : 0.2
DAY : Wednesday
OS : linux
RAM : 64
CPU 1 : 3
你能告诉我为什么我的脚本不起作用以及为什么不考虑浮点数吗?
谢谢!
【问题讨论】:
-
您将
.作为字段分隔符。使用-F'[ ,]'或-F'[[:space:],]'而不是-F'[ ,;|.]' -
wrt
FNR==0{next}- 鉴于FNR是当前正在读取的文件中的行号,您希望FNR==0何时为真? wrtFNR>1 {- 为什么要跳过 CSV 的第一行?您的真实数据中是否确实存在您的示例中未显示的标题行?