从CSV中提取列并检查列长度BASH

时间:2016-12-01 10:09:34

标签: bash csv awk cygwin

我有多个csv文件(68个文件) 行就像

2#21231#132#1231132#26#123#0#1#81#44123#A#1236#123#

我想检查每一行的第11列的长度是否等于208.我想计算第11列的长度等于208的多少行(count = count + 1)

我试过下面的剧本,但我得到的数字总是0

#!/bin/bash
date
ext='.UTF'
c=0
LIMIT=208
FILES=//DOC/*
for f in $FILES
do filename=$(echo $f| cut -d'/' -f 10)
   awk 'BEGIN{FS=OFS="#"}
   {  for(i=11;i<12;i++){
         if (length($i) -eq LIMIT);
         then let "c += 1";
         print ''length($i);
         fi
        }
   }  $i 1' $f
done
echo 'count == c'$c

提前致谢

2 个答案:

答案 0 :(得分:2)

$ awk -F'#' 'length($11)==208 {c++} END { print c+0 }' *.csv

答案 1 :(得分:0)

你想要这样的东西吗?

awk -F'#' '{c+=(length($11)==208?1:0)}END{printf "count=%d\n",c}' *.csv