从 CSV 中提取列并检查列长度 BASH
Extract column from CSV and check columns length BASH
我有多个 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
提前致谢
你想要这样的东西吗?
awk -F'#' '{c+=(length()==208?1:0)}END{printf "count=%d\n",c}' *.csv
$ awk -F'#' 'length()==208 {c++} END { print c+0 }' *.csv
我有多个 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
提前致谢
你想要这样的东西吗?
awk -F'#' '{c+=(length()==208?1:0)}END{printf "count=%d\n",c}' *.csv
$ awk -F'#' 'length()==208 {c++} END { print c+0 }' *.csv