mp3tag - mp3 tag linux
unix-recuento de columnas en archivo (10)
Dado un archivo con datos como este (es decir, el archivo stores.dat)
sid|storeNo|latitude|longitude
2|1|-28.03720000|153.42921670
9|2|-33.85090000|151.03274200
¿Cuál sería un comando para generar el número de nombres de columnas?
es decir, en el ejemplo anterior sería 4. (número de caracteres de tubería + 1 en la primera línea)
Estaba pensando algo así como:
awk ''{ FS = "|" } ; { print NF}'' stores.dat
pero devuelve todas las líneas en lugar de solo la primera y para la primera línea devuelve 1 en lugar de 4
A menos que esté usando espacios allí, debería poder usar | wc -w
| wc -w
en la primera línea.
wc
es "Word Count", que simplemente cuenta las palabras en el archivo de entrada. Si envía solo una línea, le indicará la cantidad de columnas.
Basado en la respuesta de Cat Kerr. Este comando está trabajando en Solaris
awk ''{print NF; exit}'' stores.dat
Esta es una solución alternativa (para mí: no uso awk muy a menudo):
Muestre la primera fila del archivo que contiene los datos, reemplace todas las tuberías con nuevas líneas y luego cuente las líneas:
$ head -1 stores.dat | tr ''|'' ''/n'' | wc -l
Esto es usualmente lo que uso para contar la cantidad de campos:
head -n 1 file.name | awk -F''|'' ''{print NF; exit}''
Si tiene Python instalado, puede intentar:
python -c ''import sys;f=open(sys.argv[1]);print len(f.readline().split("|"))'' /
stores.dat
Solución Perl similar a la solución awk de Mat:
perl -F''/|'' -lane ''print $#F+1; exit'' stores.dat
Lo he probado en un archivo con 1000000 columnas.
Si el separador de campo es un espacio en blanco (uno o más espacios o pestañas) en lugar de una tubería:
perl -lane ''print $#F+1; exit'' stores.dat
Tu podrías intentar
gato ARCHIVO | awk ''{print NF}''
puedes intentar:
head -1 stores.dat | grep -o /| | wc -l
seleccione cualquier fila en el archivo (en el ejemplo a continuación, es la segunda fila) y cuente el número de columnas, donde el delimitador es un espacio:
sed -n 2p text_file.dat | tr '' '' ''/n'' | wc -l
awk -F''|'' ''{print NF; exit}'' stores.dat
Simplemente salga justo después de la primera línea.