我有一系列类似以下内容的.csv文件:
Facility, Room, SN, Alert_Start, Alert_End
Foo, Bar, 28g63, 5/16/16 12:24, 5/30/16 12:24
Foo, Bar, 58dfy, 5/11/16 12:25, 5/30/16 12:24
Foo, Bar, dd8f6, 5/27/16 12:25, 5/30/16 12:24
Foo, Bar, 397d2, 5/24/16 12:24, 5/30/16 12:24每个文件包含一对不同的匹配的"Room“和"Alert_End”值。
我正在尝试将此.csv整理到一个报告中,在该报告中,一周的“房间”和"Alert_End“配对包含在一个文件中,"SN”是唯一显示的其他数据。它需要这样安排:
Room.csv
5/26/16, 5/27/16, 5/28/16, 5/29/16, 5/30/16, 5/31/16, 6/1/16
28g63, 28g63, 28g63, 28g63, 28g63, 28g63, 28g63
58dfy, 58dfy, 58dfy, 58dfy, 58dfy, 58dfy, 58dfy
, dd8f6, , , , dd8f6,
397d2, 397d2, 397d2, 397d2, 397d2, 397d2, 397d2
i58d7, , , , i58d7, i58d7, i58d7下面是尝试进行格式化的代码块:
function organizeText {
for i in {0..6}; do
day=$(date -v-${i}d +%Y-%m-%d)
day2=$(date -v-${i}d +%m/%d/%yy)
file=/tmp/$day"_$facility".csv
echo $day > $file
awk -F "," -v cow=$day2 '$5 ~ cow { print $3 }' "/tmp/$facility.csv" >> $file
done
touch "/tmp/master_$facility.csv"
for i in {0..6}; do
day=$(date -v-${i}d +%Y-%m-%d)
paste -d, "/tmp/master_$facility.csv" /tmp/$day"_$facility".csv > "/tmp/master_$facility.csv"
done
}每当我尝试运行此命令时,所有'/tmp/$day"_$facility".csv‘文件都包含与该工具相关的SN值的相同完整列表,而不管它们是否与日期匹配。
任何指导都将不胜感激。
发布于 2016-06-03 03:42:34
问题原来不是我的AWK、Bash或regex代码。
问题出在Microsoft Excel自动格式化和显示日期的方式。
我正在尝试编写正则表达式,以匹配我在Excel打开的.csv文件中看到的内容,该文件的日期格式如下: 5/23/16
但是当我在文本编辑器中打开.csv文件时,日期的格式实际上是这样的: 2016-05-23
我修复了正则表达式,使其与文本编辑器中显示的格式相匹配,然后代码就可以工作了。
https://stackoverflow.com/questions/37578773
复制相似问题