Se awk não estiver disponível, você poderá fazer isso com cut , grep e wc :
$ echo -e 'a,b, c,d\na,val1 ,val2,c' \
| cut -d ',' -f2,3 | grep '^ *val1 *, *val2 *$' | wc -l
Assumindo , como delimitador (e de forma alguma escapou , é incluído) na entrada. Para fins de teste, as colunas 2 e 3 são usadas em vez de 14 e 15.
Observe que o padrão grep permite espaços em branco finais após / antes dos valores (é possível remover os sub-padrões * se você não quiser isso). Os meta-caracteres ^ e $ correspondem ao início e ao final de uma linha.
O canal grep "Value1" | grep "Value2" de sua pergunta não faz o que você especifica - ele corresponderia muito, por exemplo:
..., Value1Value2, , ...
..., Value1, Value2, ...
..., OtherValue1, Value2, ...
...
Se awk estiver disponível (é bem normal), você pode fazer assim:
$ echo -e 'a,b, c,d\na,val1,val2,c' \
| awk -F, '$2 == "val1" && $3 == "val2" {++sum} END {print sum}'
awk apara automaticamente os espaços em branco dos valores. END é um padrão especial que corresponde depois de todas as linhas serem processadas.