我知道如何将变量传递给awk,但在使用CSV时我无法将其与列号功能相结合。我也不确定如何以这种方式执行字符串连接。
我希望我的CSV中的某些列包含MM-dd-yyyy
或yyyy/MM/dd
格式的日期,或者这些列的一些排列,并希望在其上添加默认hh:mm:ss
,因此1/10/2017
列成为1/10/2017 00:00:00
。我尝试在awk中沿着这些行做一些事情,但它似乎没有认识到我试图引用的列。而且我认为这不是字符串连接的完成方式。
for file in *.csv; do
headline=$(head -n 1 $file)
byline=$(sed '2q;d' $file)
IFS=', ' read -r -a headers <<< $headline
IFS=', ' read -r -a entries <<< $byline
for i in "${!headers[@]}"; do
date='^[0-9]+[/-][0-9]+[/-][0-9]+$'
if [[ ${entries[$i]} =~ $date ]] ; then
awk -F, -v col='$i' '{$($col)+="00:00:00";}1' OFS=, $file
fi
done
done
答案 0 :(得分:1)
如果您提供了输入数据的最小可重复示例,那么回答您的问题会更容易。
在不知道数据的情况下,我假设你应该通过用以下内容替换你的awk命令来获得你正在寻找的东西:
awk -v col=$(($i + 1)) 'BEGIN{FS=", "} {print $col " 00:00:00"}' "$file"