Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[HS] awk afficher une colonne sur deux colonnes

8 réponses
Avatar
David Martin
--0000000000006e2bea05da79b758
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

Bonjour ̓  tous,

Je souhaiterai afficher une colonne sur deux colonne, j'arrive ̓  extraire
des num̓©ros de ligne
des (ID) de VM.

100
101
102.....
jusqu'̓  120

et je souhaiterai avoir

100 111
101 112
.....
110 ......

Avec awk peut on faire ̓§a ?
Je ne trouve pas;

--
david martin

--0000000000006e2bea05da79b758
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir="ltr">Bonjour ̓  tous,͂ <div><br></div><div>Je souhaiterai afficher une colonne sur deux colonne, j&#39;arrive ̓  extraire des num̓©ros de ligne</div><div>des (ID) de VM.</div><div><br></div><div>100</div><div>101</div><div>102.....</div><div>jusqu&#39;̓  120</div><div><br></div><div>et je souhaiterai avoir͂ </div><div><br></div><div>100͂  ͂ 111</div><div>101͂  ͂ 112<br><div><div>.....</div><div>110͂  ͂  ......</div><div><br></div><div>Avec awk peut on faire ̓§a ?</div><div>Je ne trouve pas;</div><div><br></div>-- <br><div dir="ltr" class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr">david martin<div><br></div></div></div></div></div></div>

--0000000000006e2bea05da79b758--

8 réponses

Avatar
Bernard Isambert
Bonjour,
La philosophie de awk est de traiter un fichier d'entrée ligne par
ligne, ici vous avez besoin de regarder la totalité du fichier d'entrée
(vos 20 lignes) avant de commencer Í  écrire. Awk n'est pas le bon outil.
En shell, vous pouvez :
- couper le fichier d'entrée en deux, avec wc -l, head, tail, split (par
exemple, il y a sÍ»rement d'autres façons de faire)
- puis écrire les deux colonnes avec paste
Voir les "man" correspondants.
"info coreutils" vous redira quelques commandes de base pour ce genre de
manipulation.
Le 18/03/2022 Í  09:12, David Martin a écrit :
Bonjour Í  tous,
Je souhaiterai afficher une colonne sur deux colonne, j'arrive Í 
extraire des numéros de ligne
des (ID) de VM.
100
101
102.....
jusqu'Í  120
et je souhaiterai avoir
100   111
101   112
.....
110    ......
Avec awk peut on faire ça ?
Je ne trouve pas;
--
david martin

--
Bernard.
25 ans d'utilisation de Debian. Comme le temps passe...
Avatar
David Martin
--000000000000bc419f05da7bf08e
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
C'est bon j'ai trouv̓© en passant par les tableaux.
Merci qd meme
Cordialement
Le ven. 18 mars 2022 ̓  11:03, Bernard Isambert a ̓©crit :
Bonjour,
La philosophie de awk est de traiter un fichier d'entr̓©e ligne par
ligne, ici vous avez besoin de regarder la totalit̓© du fichier d'entr̓©e
(vos 20 lignes) avant de commencer ̓  ̓©crire. Awk n'est pas le bon outil.
En shell, vous pouvez :
- couper le fichier d'entr̓©e en deux, avec wc -l, head, tail, split (par
exemple, il y a s̓»rement d'autres fa̓§ons de faire)
- puis ̓©crire les deux colonnes avec paste
Voir les "man" correspondants.
"info coreutils" vous redira quelques commandes de base pour ce genre de
manipulation.
Le 18/03/2022 ̓  09:12, David Martin a ̓©crit :
Bonjour ̓  tous,
Je souhaiterai afficher une colonne sur deux colonne, j'arrive ̓ 
extraire des num̓©ros de ligne
des (ID) de VM.
100
101
102.....
jusqu'̓  120
et je souhaiterai avoir
100 111
101 112
.....
110 ......
Avec awk peut on faire ̓§a ?
Je ne trouve pas;
--
david martin

--
Bernard.
25 ans d'utilisation de Debian. Comme le temps passe...

--
david martin
--000000000000bc419f05da7bf08e
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
<div dir="ltr">C&#39;est bon j&#39;ai trouv̓© en passant par les tableaux.<div>Merci qd meme</div><div>Cordialement</div><div><br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">Le͂ ven. 18 mars 2022 ̓ ͂ 11:03, Bernard Isambert &lt;<a href="mailto:"></a>&gt; a ̓©crit͂ :<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Bonjour,<br>
La philosophie de awk est de traiter un fichier d&#39;entr̓©e ligne par <br>
ligne, ici vous avez besoin de regarder la totalit̓© du fichier d&#39;entr̓©e <br>
(vos 20 lignes) avant de commencer ̓  ̓©crire. Awk n&#39;est pas le bon outil.<br>
En shell, vous pouvez :<br>
- couper le fichier d&#39;entr̓©e en deux, avec wc -l, head, tail, split (par <br>
exemple, il y a s̓»rement d&#39;autres fa̓§ons de faire)<br>
- puis ̓©crire les deux colonnes avec paste<br>
Voir les &quot;man&quot; correspondants.<br>
&quot;info coreutils&quot; vous redira quelques commandes de base pour ce genre de <br>
manipulation.<br>
<br>
<br>
Le 18/03/2022 ̓  09:12, David Martin a ̓©crit͂ :<br>
&gt; Bonjour ̓  tous,<br>
&gt;<br>
&gt; Je souhaiterai afficher une colonne sur deux colonne, j&#39;arrive ̓  <br>
&gt; extraire des num̓©ros de ligne<br>
&gt; des (ID) de VM.<br>
&gt;<br>
&gt; 100<br>
&gt; 101<br>
&gt; 102.....<br>
&gt; jusqu&#39;̓  120<br>
&gt;<br>
&gt; et je souhaiterai avoir<br>
&gt;<br>
&gt; 100͂  ͂ 111<br>
&gt; 101͂  ͂ 112<br>
&gt; .....<br>
&gt; 110͂  ͂  ......<br>
&gt;<br>
&gt; Avec awk peut on faire ̓§a ?<br>
&gt; Je ne trouve pas;<br>
&gt;<br>
&gt; -- <br>
&gt; david martin<br>
&gt;<br>
<br>
-- <br>
Bernard.<br>
25 ans d&#39;utilisation de Debian. Comme le temps passe...<br>
<br>
</div><br clear="all"><div><br></div>-- <br><div dir="ltr" class="gmail_signature"><div dir="ltr">david martin<div><br></div></div></div>
--000000000000bc419f05da7bf08e--
Avatar
Jean-Marc
--------------nmWB9YC6Fnzj53whFmoq330v
Content-Type: multipart/mixed; boundary="------------ZvTGGeHOaqCjQtg0dogOHHdX";
protected-headers="v1"
From: Jean-Marc
To:
Message-ID:
Subject: Re: [HS] awk afficher une colonne sur deux colonnes
References: <CABKÍ­wcc3DCS_abWX=q=YJ4jReY4-iWy+
<CABKÍ­z_R9hk2ga0ZyKzuBrt1xxdcM5MptfHBnBqibyc=zs=
In-Reply-To: <CABKÍ­z_R9hk2ga0ZyKzuBrt1xxdcM5MptfHBnBqibyc=zs=
--------------ZvTGGeHOaqCjQtg0dogOHHdX
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: base64
cXVlbHF1ZSBjaG9zZSBjb21tZSDDp2EsIHBldXQtw6p0cmUgOg0KDQpmb3IgaSBpbiB7MTAw
Li4xMjB9OyBkbyBlY2hvICRpOyBkb25lIHwgY29sdW1uIC1jIDE5DQoNCg0KDQpMZSAxOC8w
My8yMiDDoCAxMTo1MiwgRGF2aWQgTWFydGluIGEgw6ljcml0wqA6DQo+IEMnZXN0IGJvbiBq
J2FpIHRyb3V2w6kgZW4gcGFzc2FudCBwYXIgbGVzIHRhYmxlYXV4Lg0KPiBNZXJjaSBxZCBt
ZW1lDQo+IENvcmRpYWxlbWVudA0KPiANCj4gDQo+IExlIHZlbi4gMTggbWFycyAyMDIyIMOg
IDExOjAzLCBCZXJuYXJkIElzYW1iZXJ0IDxiZXJuQHRhcmFuaWcubmV0PiBhIMOpY3JpdCA6
DQo+IA0KPj4gQm9uam91ciwNCj4+IExhIHBoaWxvc29waGllIGRlIGF3ayBlc3QgZGUgdHJh
aXRlciB1biBmaWNoaWVyIGQnZW50csOpZSBsaWduZSBwYXINCj4+IGxpZ25lLCBpY2kgdm91
cyBhdmV6IGJlc29pbiBkZSByZWdhcmRlciBsYSB0b3RhbGl0w6kgZHUgZmljaGllciBkJ2Vu
dHLDqWUNCj4+ICh2b3MgMjAgbGlnbmVzKSBhdmFudCBkZSBjb21tZW5jZXIgw6Agw6ljcmly
ZS4gQXdrIG4nZXN0IHBhcyBsZSBib24gb3V0aWwuDQo+PiBFbiBzaGVsbCwgdm91cyBwb3V2
ZXogOg0KPj4gLSBjb3VwZXIgbGUgZmljaGllciBkJ2VudHLDqWUgZW4gZGV1eCwgYXZlYyB3
YyAtbCwgaGVhZCwgdGFpbCwgc3BsaXQgKHBhcg0KPj4gZXhlbXBsZSwgaWwgeSBhIHPDu3Jl
bWVudCBkJ2F1dHJlcyBmYcOnb25zIGRlIGZhaXJlKQ0KPj4gLSBwdWlzIMOpY3JpcmUgbGVz
IGRldXggY29sb25uZXMgYXZlYyBwYXN0ZQ0KPj4gVm9pciBsZXMgIm1hbiIgY29ycmVzcG9u
ZGFudHMuDQo+PiAiaW5mbyBjb3JldXRpbHMiIHZvdXMgcmVkaXJhIHF1ZWxxdWVzIGNvbW1h
bmRlcyBkZSBiYXNlIHBvdXIgY2UgZ2VucmUgZGUNCj4+IG1hbmlwdWxhdGlvbi4NCj4+DQo+
Pg0KPj4gTGUgMTgvMDMvMjAyMiDDoCAwOToxMiwgRGF2aWQgTWFydGluIGEgw6ljcml0IDoN
Cj4+PiBCb25qb3VyIMOgIHRvdXMsDQo+Pj4NCj4+PiBKZSBzb3VoYWl0ZXJhaSBhZmZpY2hl
ciB1bmUgY29sb25uZSBzdXIgZGV1eCBjb2xvbm5lLCBqJ2Fycml2ZSDDoA0KPj4+IGV4dHJh
aXJlIGRlcyBudW3DqXJvcyBkZSBsaWduZQ0KPj4+IGRlcyAoSUQpIGRlIFZNLg0KPj4+DQo+
Pj4gMTAwDQo+Pj4gMTAxDQo+Pj4gMTAyLi4uLi4NCj4+PiBqdXNxdSfDoCAxMjANCj4+Pg0K
Pj4+IGV0IGplIHNvdWhhaXRlcmFpIGF2b2lyDQo+Pj4NCj4+PiAxMDAgICAxMTENCj4+PiAx
MDEgICAxMTINCj4+PiAuLi4uLg0KPj4+IDExMCAgICAuLi4uLi4NCj4+Pg0KPj4+IEF2ZWMg
YXdrIHBldXQgb24gZmFpcmUgw6dhID8NCj4+PiBKZSBuZSB0cm91dmUgcGFzOw0KPj4+DQo+
Pj4gLS0NCj4+PiBkYXZpZCBtYXJ0aW4NCj4+Pg0KPj4NCj4+IC0tDQo+PiBCZXJuYXJkLg0K
Pj4gMjUgYW5zIGQndXRpbGlzYXRpb24gZGUgRGViaWFuLiBDb21tZSBsZSB0ZW1wcyBwYXNz
ZS4uLg0KPj4NCj4+DQo+IA0KDQotLSANCkplYW4tTWFyYw0K
--------------ZvTGGeHOaqCjQtg0dogOHHdX--
--------------nmWB9YC6Fnzj53whFmoq330v
Content-Type: application/pgp-signature; name="OpenPGP_signature.asc"
Content-Description: OpenPGP digital signature
Content-Disposition: attachment; filename="OpenPGP_signature"
-----BEGIN PGP SIGNATURE-----
iHUEARYIAB0WIQQe1tJ1wH7aHlIabXRcceD57QuFWAUCYjRvlQAKCRBcceD57QuF
WFfQAP9H3Yh7jTTCe4YpI/zLLgkvw0ER7ME1fBw+XTKtcNKPbQEAjX1qyoHg/vHf
Ida/kqFbPXRUPYMFRyKE4AQWVWbWygU=o0YJ
-----END PGP SIGNATURE-----
--------------nmWB9YC6Fnzj53whFmoq330v--
Avatar
David Martin
--0000000000000f961b05da7d67e5
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
Je testerai... merci Jean-Marc
Le ven. 18 mars 2022 ̓  13:16, Jean-Marc a ̓©crit :
quelque chose comme ̓§a, peut-̓ªtre :
for i in {100..120}; do echo $i; done | column -c 19
Le 18/03/22 ̓  11:52, David Martin a ̓©crit :
C'est bon j'ai trouv̓© en passant par les tableaux.
Merci qd meme
Cordialement
Le ven. 18 mars 2022 ̓  11:03, Bernard Isambert a
̓©crit :
Bonjour,
La philosophie de awk est de traiter un fichier d'entr̓©e ligne par
ligne, ici vous avez besoin de regarder la totalit̓© du fichier d'entr̓©e
(vos 20 lignes) avant de commencer ̓  ̓©crire. Awk n'est pas le bon outil.
En shell, vous pouvez :
- couper le fichier d'entr̓©e en deux, avec wc -l, head, tail, split (par
exemple, il y a s̓»rement d'autres fa̓§ons de faire)
- puis ̓©crire les deux colonnes avec paste
Voir les "man" correspondants.
"info coreutils" vous redira quelques commandes de base pour ce genre de
manipulation.
Le 18/03/2022 ̓  09:12, David Martin a ̓©crit :
Bonjour ̓  tous,
Je souhaiterai afficher une colonne sur deux colonne, j'arrive ̓ 
extraire des num̓©ros de ligne
des (ID) de VM.
100
101
102.....
jusqu'̓  120
et je souhaiterai avoir
100 111
101 112
.....
110 ......
Avec awk peut on faire ̓§a ?
Je ne trouve pas;
--
david martin

--
Bernard.
25 ans d'utilisation de Debian. Comme le temps passe...


--
Jean-Marc

--
david martin
--0000000000000f961b05da7d67e5
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
<div dir="ltr">Je testerai... merci Jean-Marc<div><br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">Le͂ ven. 18 mars 2022 ̓ ͂ 13:16, Jean-Marc &lt;<a href="mailto:"></a>&gt; a ̓©crit͂ :<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">quelque chose comme ̓§a, peut-̓ªtre :<br>
<br>
for i in {100..120}; do echo $i; done | column -c 19<br>
<br>
<br>
<br>
Le 18/03/22 ̓  11:52, David Martin a ̓©crit͂ :<br>
&gt; C&#39;est bon j&#39;ai trouv̓© en passant par les tableaux.<br>
&gt; Merci qd meme<br>
&gt; Cordialement<br>
&gt; <br>
&gt; <br>
&gt; Le ven. 18 mars 2022 ̓  11:03, Bernard Isambert &lt;<a href="mailto:" target="_blank"></a>&gt; a ̓©crit :<br>
&gt; <br>
&gt;&gt; Bonjour,<br>
&gt;&gt; La philosophie de awk est de traiter un fichier d&#39;entr̓©e ligne par<br>
&gt;&gt; ligne, ici vous avez besoin de regarder la totalit̓© du fichier d&#39;entr̓©e<br>
&gt;&gt; (vos 20 lignes) avant de commencer ̓  ̓©crire. Awk n&#39;est pas le bon outil.<br>
&gt;&gt; En shell, vous pouvez :<br>
&gt;&gt; - couper le fichier d&#39;entr̓©e en deux, avec wc -l, head, tail, split (par<br>
&gt;&gt; exemple, il y a s̓»rement d&#39;autres fa̓§ons de faire)<br>
&gt;&gt; - puis ̓©crire les deux colonnes avec paste<br>
&gt;&gt; Voir les &quot;man&quot; correspondants.<br>
&gt;&gt; &quot;info coreutils&quot; vous redira quelques commandes de base pour ce genre de<br>
&gt;&gt; manipulation.<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; Le 18/03/2022 ̓  09:12, David Martin a ̓©crit :<br>
&gt;&gt;&gt; Bonjour ̓  tous,<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; Je souhaiterai afficher une colonne sur deux colonne, j&#39;arrive ̓ <br>
&gt;&gt;&gt; extraire des num̓©ros de ligne<br>
&gt;&gt;&gt; des (ID) de VM.<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; 100<br>
&gt;&gt;&gt; 101<br>
&gt;&gt;&gt; 102.....<br>
&gt;&gt;&gt; jusqu&#39;̓  120<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; et je souhaiterai avoir<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; 100͂  ͂ 111<br>
&gt;&gt;&gt; 101͂  ͂ 112<br>
&gt;&gt;&gt; .....<br>
&gt;&gt;&gt; 110͂  ͂  ......<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; Avec awk peut on faire ̓§a ?<br>
&gt;&gt;&gt; Je ne trouve pas;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; --<br>
&gt;&gt;&gt; david martin<br>
&gt;&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; --<br>
&gt;&gt; Bernard.<br>
&gt;&gt; 25 ans d&#39;utilisation de Debian. Comme le temps passe...<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt; <br>
<br>
-- <br>
Jean-Marc<br>
</div><br clear="all"><div><br></div>-- <br><div dir="ltr" class="gmail_signature"><div dir="ltr">david martin<div><br></div></div></div>
--0000000000000f961b05da7d67e5--
Avatar
Marc Chantreux
salut,
for i in {100..120}; do echo $i; done | column -c 19

seq 100 120 | xargs -n2
for a b ({100..120}) echo $a $b
print -C2 {100..120}
cordialement,
--
Marc Chantreux
Direction du numérique de l'Université de Strasbourg
PÍ´le de Calcul et Services Avancés Í  la Recherche (CESAR)
http://annuaire.unistra.fr/p/20200
Avatar
Mathias Dufresne
--000000000000a6129d05dab99d0b
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
_____________________________________________
#!/usr/bin/awk
{
start = 1
printf("%s%s", $start, FS)
inc = 2
}
{
for(i=start + inc; i < NF+1; ) {
printf("%s%s", $i, FS)
i = i + inc
}
print ""
}
_____________________________________________
Je n'ai pas r̓©ussi ̓  faire fonctionner l'incr̓©ment dans le for() et ̓§a
m'̓©tonne...
Le ven. 18 mars 2022 ̓  17:09, Marc Chantreux a ̓©crit :
salut,
for i in {100..120}; do echo $i; done | column -c 19

seq 100 120 | xargs -n2
for a b ({100..120}) echo $a $b
print -C2 {100..120}
cordialement,
--
Marc Chantreux
Direction du num̓©rique de l'Universit̓© de Strasbourg
P̓´le de Calcul et Services Avanc̓©s ̓  la Recherche (CESAR)
http://annuaire.unistra.fr/p/20200

--000000000000a6129d05dab99d0b
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
<div dir="ltr"><div>_____________________________________________<br></div>#!/usr/bin/awk<br><br>{<br>͂  start = 1<br>͂  printf(&quot;%s%s&quot;, $start, FS)<br>͂  inc = 2<br>}<br>{<br>͂  for(i=start + inc; i &lt; NF+1; ) {<br>͂  ͂  printf(&quot;%s%s&quot;, $i, FS)<br>͂  ͂  i = i + inc<br>͂  }<br>͂  print &quot;&quot;<br><div>}</div><div><div>_____________________________________________</div><div><br></div><div>Je n&#39;ai pas r̓©ussi ̓  faire fonctionner l&#39;incr̓©ment dans le for() et ̓§a m&#39;̓©tonne...<br></div></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">Le͂ ven. 18 mars 2022 ̓ ͂ 17:09, Marc Chantreux &lt;<a href="mailto:"></a>&gt; a ̓©crit͂ :<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">salut,<br>
<br>
&gt; for i in {100..120}; do echo $i; done | column -c 19<br>
<br>
seq 100 120 | xargs -n2<br>
<br>
for a b ({100..120}) echo $a $b<br>
<br>
print -C2 {100..120}<br>
<br>
<br>
cordialement,<br>
<br>
-- <br>
Marc Chantreux<br>
Direction du num̓©rique de l&#39;Universit̓© de Strasbourg<br>
P̓´le de Calcul et Services Avanc̓©s ̓  la Recherche (CESAR)<br>
<a href="http://annuaire.unistra.fr/p/20200" rel="noreferrer" target="_blank">http://annuaire.unistra.fr/p/20200</a><br>
<br>
</div>
--000000000000a6129d05dab99d0b--
Avatar
Marc Chantreux
salut,
si vraiment l'idée est d'utiliser awk:
seq 120 140 | awk '
{ if (NR%2) o=$1 else print o,$1 }
END { if (NR%2) print o }
'
Par contre je tiens Í  dire que pour réaranger, écraser, merger des
colonnes, l'outils de référence pour moi est perl -F.
marc
Avatar
Bertrand Orvoine
Bonjour,
et avec la commande column, ce ne serait pas plus simple ? :
$ seq 100 120|column -c 20
100 111
101 112
102 113
103 114
104 115
105 116
106 117
107 118
108 119
109 120
110
On Fri, Mar 18, 2022 at 09:12:54AM +0100, David Martin wrote:
Bonjour Í  tous,
Je souhaiterai afficher une colonne sur deux colonne, j'arrive Í  extraire
des numéros de ligne
des (ID) de VM.
100
101
102.....
jusqu'Í  120
et je souhaiterai avoir
100 111
101 112
.....
110 ......
Avec awk peut on faire ça ?
Je ne trouve pas;
--
david martin

--
Bertrand Orvoine