shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Formatar entrada em colunas


From: Darlon Vasata
Subject: Formatar entrada em colunas
Date: Thu, 31 Dec 2009 18:37:25 -0200

Olá!


Tenho um arquivo com o seguinte formato:

$cat arquivo
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

E queria produzir um script que com essa entrada, me retornasse a seguinte saída:
1       6       11
2       7       12
3       8       13
4       9       14
5       10      15


Alguém poderia me ajudar?
Tentei algo com o paste - - - , porém a saída fica "transposta" ao jeito como preciso.

Tentei alguma coisa também o pr, mas como como preciso de muitas colunas e os valores de entrada são grandes, ele acaba truncando alguns valores.


Obrigado.

Darlon
From address@hidden Thu Dec 31 14:03:48 2009
Return-Path: <address@hidden>
X-Sender: address@hidden
X-Apparently-To: address@hidden
X-Received: (qmail 83045 invoked from network); 31 Dec 2009 22:03:46 -0000
X-Received: from unknown (98.137.34.45)
 by m3.grp.sp2.yahoo.com with QMQP; 31 Dec 2009 22:03:46 -0000
X-Received: from unknown (HELO mail-gx0-f219.google.com) (209.85.217.219)
 by mta2.grp.sp2.yahoo.com with SMTP; 31 Dec 2009 22:03:46 -0000
X-Received: by gxk19 with SMTP id 19so9517838gxk.0
       for <address@hidden>; Thu, 31 Dec 2009 14:03:45 -0800 (PST)
MIME-Version: 1.0
X-Received: by 10.101.130.6 with SMTP id h6mr10411603ann.197.1262297025331; Thu,
        31 Dec 2009 14:03:45 -0800 (PST)
In-Reply-To: <address@hidden>
References: <address@hidden>
Date: Thu, 31 Dec 2009 20:03:45 -0200
Message-ID: <address@hidden>
To: address@hidden
X-Originating-IP: 209.85.217.219
X-eGroups-Msg-Info: 1:12:0:0:0
From: Tiago Peczenyj <address@hidden>
Subject: Re: [shell-script] Formatar entrada em colunas
X-Yahoo-Group-Post: member; u 4465305; 
y=bTMezfBfKKYj0yAEjxV8xzVCgBZi2NxRxGkb4eGKW9C4FDPQovU
X-Yahoo-Profile: grande_uosh
Content-Type: text/plain
Content-Transfer-Encoding: quoted-printable

Ola

a unica forma q vejo agora é combinar tudo em memoria usando awk.

comando | awk '{ i = (NR-1)%5; a[i] = a[i] " " $0 }
END{ for(i=0;i<5;i++) print a[i]; }'

ou se vc não se importa em ler o arquivo 5 vezes.

for i in 1 2 3 4 5; do
  gsed -n "0~${i}p" arquivo
end

com certeza existem outras formas, porem não consigo imaginar nenhuma agora.
É um bom problema!!

dica tirada do sed1liner

# delete every 8th line
gsed '0~8d'                           # GNU sed only
sed 'n;n;n;n;n;n;n;d;'                # other seds

Obs: Feliz 2010 a todos

2009/12/31 Darlon Vasata <address@hidden>



Olá!

Tenho um arquivo com o seguinte formato:

$cat arquivo
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

E queria produzir um script que com essa entrada, me retornasse a
seguinte saída:
1 6 11
2 7 12
3 8 13
4 9 14
5 10 15

Alguém poderia me ajudar?
Tentei algo com o paste - - - , porém a saída fica "transposta" ao
jeito como preciso.

Tentei alguma coisa também o pr, mas como como preciso de muitas
colunas e os valores de entrada são grandes, ele acaba truncando
alguns valores.

Obrigado.

Darlon



--
Tiago B. Peczenyj
Linux User #405772

http://pacman.blog.br


[As partes desta mensagem que não continham texto foram removidas]



reply via email to

[Prev in Thread] Current Thread [Next in Thread]