Dividir arquivo de texto por espaço em branco

0

Eu tenho um arquivo de texto muito grande com várias colunas de dados.

Ou seja. 1312.4123 asdkofADkofaO213 dakofasdjodas sex mar 2013 15:23:11 .. .. .. etc.

Desejo dividir este arquivo de texto em vários subconjuntos, com base em colunas (separadas por espaço em branco). Column1.txt teria 1312.4123, Column2.txt asdkofADkofa0213 etc, para todas as linhas subseqüentes. Se eu tivesse que resumir o que eu estou depois seria texto para coluna no excel, no entanto, o tamanho do arquivo me impede de usar um programa desse tipo.

Estou usando o linux, que oferece opções de linha de comando.

    
por Peleus 05.04.2013 / 12:13

2 respostas

1

Isso deve dar o que você deseja:

columns='head -1 datafile.txt | wc -w'
for i in 'seq 1 $columns'
do
    awk '{print $'$i'}' < datafile.txt > Column$i.txt
done

Isso pressupõe que todas as linhas no arquivo tenham o mesmo número de colunas que a primeira linha.

    
por 05.04.2013 / 12:22
1

O AWK é um interpretador baseado em linguagem de programação . Eles tendem a suportar a leitura e gravação de arquivos.

A mágica aqui é:

  • NF : número de campos em cada arquivo (o espaço é o delimitador padrão)
  • i : variável de usuário
  • $ i : construído na variável de campo $ 1 ... $ NF ($ 0 é linha inteira)
  • "coluna" i : o operador padrão para strings é concatenate (não é necessário "a" + "b" ou "a". "b")
  • > arquivo : redirecionamento de saída

E.G:

$ ll
total 140
drwxr-xr-x 2 jaroslav jaroslav  4096 Mar 16 07:11 answers
drwxr-xr-x 3 jaroslav jaroslav  4096 Dec  7 12:38 diff
-rw-r--r-- 1 jaroslav jaroslav   214 Dec  7 12:38 diff.tar.gz
-rw-r--r-- 1 jaroslav jaroslav   700 Apr  5 02:37 fonts.sh
-rw-r--r-- 1 jaroslav jaroslav     4 Apr  5 15:52 hai
-rw-r--r-- 1 jaroslav jaroslav     0 Mar 19 05:06 moo
-rw-r--r-- 1 jaroslav jaroslav 10240 Dec  7 12:08 moo.tar
-rw-r--r-- 1 jaroslav jaroslav 23147 Mar 16 08:29 ob.rc.xml
drwxr-xr-x 3 jaroslav jaroslav  4096 Mar 16 03:08 rename
drwxr-sr-x 2 jaroslav games     4096 Mar 19 05:07 setgid
drwxr-xr-x 2 jaroslav jaroslav 69632 Mar 11 00:42 times
-rw-r--r-- 1 jaroslav jaroslav    92 Mar 11 00:14 while
drwxr-xr-x 4 jaroslav jaroslav  4096 Mar 22 00:15 wkhtmltoimage
$ ls -l  | awk '{ 
    for (i=1; i<=NF; i++) {
        file="column" i; 
        print $i > file 
    }
  }'
$ cat column9 | column
answers         fonts.sh        moo.tar         setgid          wkhtmltoimage
diff            hai             ob.rc.xml       times
diff.tar.gz     moo             rename          while

$ cat column1 | column
total           -rw-r--r--      -rw-r--r--      drwxr-xr-x      -rw-r--r--
drwxr-xr-x      -rw-r--r--      -rw-r--r--      drwxr-sr-x      drwxr-xr-x
drwxr-xr-x      -rw-r--r--      -rw-r--r--      drwxr-xr-x
    
por 05.04.2013 / 16:10