.
Если вы не возражаете, используйте комбинацию awk и grep.
awk -F"," ' {
if ( $2 != "" && $4 ~ /[[:digit:]]{4}(-[[:digit:]]{2}){2} [[:digit:]]{2}(:[[:digit:]]{2}){2}/ ) print
} ' <file> | grep '.*,.*,.*,.*,.*,.*,.*'
РЕДАКТИРОВАТЬ: Чистая альтернатива awk. Спасибо @Archemar за указание на это.
awk -F"," ' {
if ( NF == 7 && $2 != "" && $4 ~ /[[:digit:]]{4}(-[[:digit:]]{2}){2} [[:digit:]]{2}(:[[:digit:]]{2}){2}/ ) print
} ' <file>
Вы бы лучше, чтобы просто использовать GREP
. Я знаю, что Regexp, как это может показаться пугающим, но становится лучше, если вы просто сделаете шаг назад.
__=[^,]* d=[0-9][0-9] y=$d$d m=$d
grep "^$__,${__%?}$__,$__,$y-$m-$d $d:$d:$d,$__,$__,$__$\
" <<\IN
6751176513,ahggasda,3453453,hgdahgsd,hgfhgfhg,,
,,
ajhgdha | sajhsgdahj|sdahgdhjaghjsd
6751176513,ahggasda,gdfgdf,2015-10-20 05:15:25,sdfsd,,
IN
Смотрите? Это не все что плохо - и это даже имеет смысл. Это одна вещь Брес (основные регулярные выражения) очень хороши для: легкая абстракция более высокого уровня.
Вышеуказанные отпечатки.
6751176513,ahggasda,gdfgdf,2015-10-20 05:15:25,sdfsd,,