como adicionar múltiplos espaços entre colunas no Unix

1

Eu tenho um arquivo parecido com isso

0 1 2 3 4 1 0 0
1 2 3 5 0 1 0 0

Eu quero adicionar mais espaço (múltiplo) entre as colunas e obter algo assim

0      1      2      3      4
1      2      3      5      0   

Eu tentei algo com a coluna -t, mas ainda assim não dá o espaço que eu quero.

    
por Anna1364 16.05.2017 / 01:02

5 respostas

2

Com o coreutils, você pode converter espaços em tabulações com tr e, em seguida, converter tabulações em vários espaços com expand :

$ tr ' ' '\t' < file | expand
0       1       2       3       4       1       0       0
1       2       3       5       0       1       0       0

As paradas de tabulação padrão são 8 espaços, mas você pode ajustar isso, por exemplo.

$ tr ' ' '\t' < file | expand -t 10
0         1         2         3         4         1         0         0
1         2         3         5         0         1         0         0
    
por 16.05.2017 / 01:35
1

Mais algumas ideias que funcionarão com seus dados de amostra:

$ a="0 1 2 3 4 1 0 0"

$ echo "$a"
0 1 2 3 4 1 0 0

$ echo "${a// /                 }"
0                 1                 2                 3                 4                 1                 0                 0

$ echo "$a" |sed 's/ /             /g'
0             1             2             3             4             1             0             0

$ echo "${a// /$'\t'}"
0   1   2   3   4   1   0   0

$ echo "$a" |sed 's/ /\t\t/g'
0       1       2       3       4       1       0       0
    
por 16.05.2017 / 01:22
0

para formatar as colunas uniformemente, você pode usar o awk:

awk '{ for(i=1;i <= NF; i++) { printf "%-7s", $i } print "" }' < input > output
    
por 16.05.2017 / 01:15
0
sed -E 's/\S+\s/&     /g' your_monospace.file

awk -v OFS="     " '{$1=$1}1' your_monospaced.file

perl -pale '$_ = join $" x 5, @F' your_monospaced.file
    
por 16.05.2017 / 07:57
0

Experimente col -x ? Usa espaços em vez de abas.

    
por 16.05.2017 / 17:35