É isso que você quer?
cat thefile | tr '\t' ' '| tr -s " " | cut -d' ' -f25-46
Por favor, marque como a resposta correta, se isso resolver o seu problema
Eu quero filtrar algumas colunas de um arquivo, ele tem 46 no total. Eu só quero filtrar do 25 até o 46 , da seguinte maneira:
Saída desejada:
Column25 Column26 ... Column47
Column25 Column26 ... Column47
Column25 Column26 ... Column47
Eu tenho o comando correto com o awk:
cat -n <(awk '{n=17;if(NR==1)n=25;for(i=n;i<=NF;i++) a[$i]++} END{for(val in a) print val,a[val]}' filelog.txt)
O comando acima, leva da coluna 25 até o último, neste caso, é o 47 . Funciona corretamente, imprime todas as strings em todos os campos que eu quero.
As colunas que gostaria de imprimir têm espaços em branco da seguinte maneira:
Column25 Column26 ... Column47
Column25 Column26 [...] Column47
[:space:]Column26 [:space:] Column47
[:space:][:space:] [:space:] [:space:]
Column25 [:space:] [:space:] [:space:]
O problema é: Quando imprimo todas as colunas específicas, as strings de outras colunas passam para os espaços em branco nas colunas desejadas.
Por exemplo:
Column25 Column26 ... Column47
Column25 Stringsofcolumn12 Manystrings Stringsofcolumn21
Stringsofcolumn23 Stringsofcolumn5 ofmanycolumns Stringsofcolumn22
Column25 Stringsofcolumn16 blablabla anothermanystrings
Existe alguma maneira de excluir os espaços em branco nas colunas que gostaria de imprimir, para evitar essa situação?
As strings das colunas, possuem o mesmo texto dos cabeçalhos. exemplo: se o column28
tiver sequências de conteúdo, as sequências serão column28
literalmente. Mas eu acho que isso não importa agora, apenas comente.
Obrigado!
Tags text-processing awk sed tr linux