awk -F'|' '{print NF; exit}' stores.dat
Salga justo después de la primera línea.
A menos que esté usando espacios allí, debería poder usar | wc -w
en la primera línea.
wc
es "Conteo de palabras", que simplemente cuenta las palabras en el archivo de entrada. Si envía solo una línea, le dirá la cantidad de columnas.
Esta es una solución (para mí:no uso awk muy a menudo):
Muestre la primera fila del archivo que contiene los datos, reemplace todas las canalizaciones con nuevas líneas y luego cuente las líneas:
$ head -1 stores.dat | tr '|' '\n' | wc -l