Mostrar o contido do ficheiro en formato de columna dentro de Linux

O comando Linux Column funciona con ficheiros de texto delimitados

Pode mostrar un ficheiro delimitado no terminal Linux para que cada elemento delimitado se amose dentro da súa propia columna. Por exemplo, aquí hai un exemplo da táboa de fútbol da Premier League inglesa que usa tubos como delimitadores.

pos | equipo | pld | pts 1 | leicester | 31 | 66 2 | tottenham | 31 | 61 3 | arsenal | 30 | 55 4 | cidade do home | 30 | 51 5 | xamón do oeste | 30 | 50 6 | home utd | 30 | 50 7 | surampton | 31 | 47 8 | stoke city | 31 | 46 9 | Liverpool | 29 | 44 10 | Chelsea | 30 | 41

Esta lista inclúe os 10 mellores equipos, os seus nomes, o número de xogos que xogaron e os puntos marcados.

Existen varios comandos de Linux que pode usar para amosar os datos na liña de comandos. Por exemplo, o comando cat mostra o ficheiro exactamente como aparece no ficheiro. O comando de cola pode usarse para mostrar unha porción do ficheiro ou todo, como pode o comando principal . Non obstante, ningún destes comandos mostra a saída dun xeito que o faga bo aspecto.

Idealmente, quere poder ver os datos sen o símbolo de canalización e separarse. Aquí é onde entra o comando da columna .

Uso básico do comando de columna

Pode executar o comando column sen ningún parámetro como segue:

columna

Isto funciona mellor con ficheiros de palabras con espazos entre as palabras. tampouco funciona con datos tabulares como neste exemplo da táboa de liga.

A saída é a seguinte:

pos | equipo | pld | pts 2 | tottenham | 31 | 61 4 | cidade do home | 30 | 51 6 | home utd | 30 | 50 8 | stoke city | 31 | 46 10 | Chelsea | 30 | 41 1 | leicester | 31 | 66 3 | arsenal | 30 | 55 5 | xamón oeste | 30 | 50 7 | surampton | 31 | 47 9 | liverpool | 29 | 44

Especificando o ancho da columna

Se coñeces os anchos das columnas, podes empregar o seguinte comando para separar a columna por ancho:

columna -c

Por exemplo, se coñeces o ancho de cada columna hai 20 caracteres pode usar o seguinte comando:

columna -c20

No caso da táboa de liga, isto non funciona ben a menos que todas as columnas teñan un ancho determinado. Para probar isto, modifique o ficheiro da táboa da liga como segue:

pos team pld pts 1 leicester 31 66 2 tottenham 31 61 3 arsenal 30 55 4 home city 30 51 5 west ham 30 50 6 home utd 30 50 7 so'ton 31 47 8 stoke 31 46 9 liverpool 29 44 10 chelsea 30 41

Agora, usando o seguinte comando, pode obter unha saída decente:

columna -c10 ligatable

O problema con isto é que os datos do ficheiro xa estaban ben, polo que os comandos de cola, cabeza, nano ou cat poderían mostrar a mesma información dun xeito aceptable.

Especificación de separadores usando o comando de columna

A mellor forma de usar o comando de columna en coma, canalización ou outros ficheiros delimitados é a seguinte:

columna -s "|" -t

A opción -s permite determinar o delimitador a empregar. Por exemplo, se o ficheiro está separado por comas, pode pór "," despois do -s. O switch -t mostra os datos nun formato tabular.

Separadores de saída

Ata agora, este exemplo mostrou como traballar co delimitador dun ficheiro de entrada, pero que hai dos datos cando se mostra na pantalla.

O valor predeterminado de Linux é de dous espazos, pero quizais queres empregar dúas columnas. O seguinte comando mostra como especificar un separador de saída:

columna -s "|" -t -o "::"

Cando se usa co ficheiro da táboa de liga, o comando produce a seguinte saída:

pos :: equipo :: pld :: pts 1 :: leicester :: 31 :: 66 2 :: tottenham :: 31 :: 61 3 :: arsenal :: 30 :: 55 4 :: home cidade :: 30 :: 51 5 :: oeste de xamón :: 30 :: 50 6 :: home utd :: 30 :: 50 7 :: southampton :: 31 :: 47 8 :: stoke city :: 31 :: 46 9 :: liverpool :: 29 :: 44 10 :: Chelsea :: 30 :: 41

Encha filas antes das columnas

Hai outro cambio que non é particularmente útil, pero aquí inclúese para completar. O interruptor -x cando se usa co botón -c enche as filas antes das columnas.

Entón, que significa isto? Mire o seguinte exemplo:

columna -c100 ligatable

A saída deste sería o seguinte:

pos | equipo | pld | pts 3 | arsenal | 30 | 55 6 | home utd | 30 | 50 9 | liverpool | 29 | 44 1 | leicester | 31 | 66 4 | cidade do home | 30 | 51 7 | surampton | 31 | 47 10 | Chelsea | 30 | 41 2 | tottenham | 31 | 61 5 | oeste de xamón | 30 | 50 8 | stoke city | 31 | 46

Como podes ver, baixa primeiro e despois cruza.

Agora mira este exemplo:

columna -c100 -x ligatable

Nesta ocasión a saída é a seguinte:

pos | equipo | pld | pts 1 | leicester | 31 | 66 2 | tottenham | 31 | 61 3 | arsenal | 30 | 55 4 | cidade do home | 30 | 51 5 | xamón do oeste | 30 | 50 6 | home utd | 30 | 50 7 | surampton | 31 | 47 8 | stoke city | 31 | 46 9 | Liverpool | 29 | 44 10 | Chelsea | 30 | 41

Os datos cruzan a pantalla e despois baixan.

Outros interruptores

Os únicos outros interruptores dispoñibles son os seguintes:

columna -V

Isto amosa a versión da columna instalada no seu computador.

columna --help

Isto amosa a páxina de manual na xanela do terminal.