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

script bash

5 réponses
Avatar
Tahar
--0-1415465421-1205918360=:21081
Content-Type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: 8bit

Bonjour à tous,

Je voudrais solliciter votre aide pour un petit script que j'ai fait mais qui ne marche pas exactement comme je le veux.

Alors voilà; j'ai un fichier texte de deux colonnes séparées par une tabulation je voudrais produire un autre fichier en le parcourant ligne par ligne et en rajoutant des paramètres pour chaque ligne

mon fichier de départ est sctructuré comme suit

lingne1colonne1 ligne1colonne2
ligne2colonne1 ligne2colonne2
ligne3colonne1 ligne3colonne2
.
.
.
.


j'ai utilisé awk pour retenir les champs $1 et $2 dans des variables et redirigé le résultat dans un autre fichier avec echo "mes rajouts $var1 mes rajouts $var2" >> fich_resultat

sauf que au lieu d'avoir une seul ligne j'ai l'ensemble de $1 et $2 de toutes les lignes quelqu'un pourrait me dire comment faire ??

voici mon script

!/bin/bash

while read line
do

champ1=$(awk -F" " '{print($1)}' test)
champ2=$(awk -F" " '{print($2)}' test)

echo "ou=$champ1 dc=$champ2">> resultat

done < test


merci pour votre aide

--0-1415465421-1205918360=:21081
Content-Type: text/html; charset=iso-8859-1
Content-Transfer-Encoding: 8bit

Bonjour à tous,<br><br>Je voudrais solliciter votre aide pour un petit script que j'ai fait mais qui ne marche pas exactement comme je le veux.<br><br>Alors voilà; j'ai un fichier texte de deux colonnes séparées par une tabulation je voudrais produire un autre fichier en le parcourant ligne par ligne et en rajoutant des paramètres pour chaque ligne<br><br>mon fichier de départ est sctructuré comme suit<br><br>lingne1colonne1&nbsp;&nbsp; &nbsp;&nbsp; ligne1colonne2<br>ligne2colonne1&nbsp;&nbsp; &nbsp;&nbsp; &nbsp; ligne2colonne2<br>ligne3colonne1&nbsp;&nbsp; &nbsp;&nbsp; &nbsp; ligne3colonne2<br>.<br>.<br>.<br>.<br><br><br>j'ai utilisé awk pour retenir les champs $1 et $2 dans des variables et redirigé le résultat dans un autre fichier avec echo "mes rajouts $var1 mes rajouts $var2" &gt;&gt; fich_resultat<br><br>sauf que au lieu d'avoir une seul ligne j'ai l'ensemble de $1 et $2 de toutes les lignes quelqu'un pourrait me dire comment faire ??<br><br>voici mon script
<br><br>!/bin/bash<br><br>while read line<br>do<br><br>champ1=$(awk -F" " '{print($1)}' test)<br>champ2=$(awk -F" " '{print($2)}' test)<br><br>echo "ou=$champ1 dc=$champ2"&gt;&gt; resultat<br><br>done &lt; test<br><br><br>merci pour votre aide<br>
--0-1415465421-1205918360=:21081--

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/DebFrFrenchLists
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"

To UNSUBSCRIBE, email to debian-user-french-REQUEST@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org

5 réponses

Avatar
Edi Stojicevic
* Tahar [2008-03-19 10:19:20 +0100] wrote :

Bonjour à tous,



Salut,

Je voudrais solliciter votre aide pour un petit script que j'ai fait mais qui ne marche pas exactement comme je le veux.



Tu as une liste de diffusion dediee pour ca :

http://debianworld.org/?q=node/12

Je la met en copie de ce mail ...

Alors voilà; j'ai un fichier texte de deux colonnes séparées par une tabulation je voudrais produire un autre fichier en le parcourant ligne par ligne et en rajoutant des paramètres pour chaque ligne

mon fichier de départ est sctructuré comme suit

lingne1colonne1 ligne1colonne2
ligne2colonne1 ligne2colonne2
ligne3colonne1 ligne3colonne2



En sed :

sed 's/(.*)t*(.*)/ ou = 1 dc = 2/' file > new file

a+

--
. ''`. (___/) E d i S T O J I C E V I C
: :' : (='.'=) http://www.debianworld.org
`. `~' (")_(") GPG: 0x1237B032
`-

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/DebFrFrenchLists
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
Stéphane
--=-PrziljH0hXHZ/aErkX5s
Content-Type: text/plain; charset=ISO-8859-15
Content-Transfer-Encoding: 8bit

Et voila le résultat :

#!/bin/bash

while read line
do
champ1=$(echo "$line"|awk '{print $1}')
champ2=$(echo "$line"|awk '{print $2}')

echo "ou=$champ1 dc=$champ2" >> resultat

done < test

Sinon, une petite astuce, évite d'appeler tes fichiers 'test' car c'est
une commande unix.


Bonne chance.



Le mercredi 19 mars 2008 à 10:19 +0100, Tahar a écrit :

Bonjour à tous,

Je voudrais solliciter votre aide pour un petit script que j'ai fait
mais qui ne marche pas exactement comme je le veux.

Alors voilà; j'ai un fichier texte de deux colonnes séparées par une
tabulation je voudrais produire un autre fichier en le parcourant
ligne par ligne et en rajoutant des paramètres pour chaque ligne

mon fichier de départ est sctructuré comme suit

lingne1colonne1 ligne1colonne2
ligne2colonne1 ligne2colonne2
ligne3colonne1 ligne3colonne2
.
.
.
.


j'ai utilisé awk pour retenir les champs $1 et $2 dans des variables
et redirigé le résultat dans un autre fichier avec echo "mes rajouts
$var1 mes rajouts $var2" >> fich_resultat

sauf que au lieu d'avoir une seul ligne j'ai l'ensemble de $1 et $2 de
toutes les lignes quelqu'un pourrait me dire comment faire ??

voici mon script

!/bin/bash

while read line
do

champ1=$(awk -F" " '{print($1)}' test)
champ2=$(awk -F" " '{print($2)}' test)

echo "ou=$champ1 dc=$champ2">> resultat

done < test


merci pour votre aide



--=-PrziljH0hXHZ/aErkX5s
Content-Type: text/html; charset=utf-8
Content-Transfer-Encoding: 7bit

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 TRANSITIONAL//EN">
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; CHARSET=UTF-8">
<META NAME="GENERATOR" CONTENT="GtkHTML/3.18.0">
</HEAD>
<BODY>
Et voila le r&#233;sultat :<BR>
<BR>
#!/bin/bash<BR>
<BR>
while read line<BR>
do<BR>
champ1=$(echo &quot;$line&quot;|awk '{print $1}')<BR>
champ2=$(echo &quot;$line&quot;|awk '{print $2}')<BR>
<BR>
echo &quot;ou=$champ1 dc=$champ2&quot; &gt;&gt; resultat<BR>
<BR>
done &lt; test<BR>
<BR>
Sinon, une petite astuce, &#233;vite d'appeler tes fichiers 'test' car c'est une commande unix.<BR>
<BR>
<BR>
Bonne chance.<BR>
<BR>
<BR>
<BR>
Le mercredi 19 mars 2008 &#224; 10:19 +0100, Tahar a &#233;crit&nbsp;:<BR>
<BLOCKQUOTE TYPE=CITE>
<FONT COLOR="#000000">Bonjour &#224; tous,</FONT><BR>
<BR>
<FONT COLOR="#000000">Je voudrais solliciter votre aide pour un petit script que j'ai fait mais qui ne marche pas exactement comme je le veux.</FONT><BR>
<BR>
<FONT COLOR="#000000">Alors voil&#224;; j'ai un fichier texte de deux colonnes s&#233;par&#233;es par une tabulation je voudrais produire un autre fichier en le parcourant ligne par ligne et en rajoutant des param&#232;tres pour chaque ligne</FONT><BR>
<BR>
<FONT COLOR="#000000">mon fichier de d&#233;part est sctructur&#233; comme suit</FONT><BR>
<BR>
<FONT COLOR="#000000">lingne1colonne1&nbsp;&nbsp; &nbsp;&nbsp; ligne1colonne2</FONT><BR>
<FONT COLOR="#000000">ligne2colonne1&nbsp;&nbsp; &nbsp;&nbsp; &nbsp; ligne2colonne2</FONT><BR>
<FONT COLOR="#000000">ligne3colonne1&nbsp;&nbsp; &nbsp;&nbsp; &nbsp; ligne3colonne2</FONT><BR>
<FONT COLOR="#000000">.</FONT><BR>
<FONT COLOR="#000000">.</FONT><BR>
<FONT COLOR="#000000">.</FONT><BR>
<FONT COLOR="#000000">.</FONT><BR>
<BR>
<BR>
<FONT COLOR="#000000">j'ai utilis&#233; awk pour retenir les champs $1 et $2 dans des variables et redirig&#233; le r&#233;sultat dans un autre fichier avec echo &quot;mes rajouts $var1 mes rajouts $var2&quot; &gt;&gt; fich_resultat</FONT><BR>
<BR>
<FONT COLOR="#000000">sauf que au lieu d'avoir une seul ligne j'ai l'ensemble de $1 et $2 de toutes les lignes quelqu'un pourrait me dire comment faire ??</FONT><BR>
<BR>
<FONT COLOR="#000000">voici mon script </FONT><BR>
<BR>
<FONT COLOR="#000000">!/bin/bash</FONT><BR>
<BR>
<FONT COLOR="#000000">while read line</FONT><BR>
<FONT COLOR="#000000">do</FONT><BR>
<BR>
<FONT COLOR="#000000">champ1=$(awk -F&quot; &quot; '{print($1)}' test)</FONT><BR>
<FONT COLOR="#000000">champ2=$(awk -F&quot; &quot; '{print($2)}' test)</FONT><BR>
<BR>
<FONT COLOR="#000000">echo &quot;ou=$champ1 dc=$champ2&quot;&gt;&gt; resultat</FONT><BR>
<BR>
<FONT COLOR="#000000">done &lt; test</FONT><BR>
<BR>
<BR>
<FONT COLOR="#000000">merci pour votre aide</FONT>
</BLOCKQUOTE>
</BODY>
</HTML>

--=-PrziljH0hXHZ/aErkX5s--

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/DebFrFrenchLists
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
Alexandre
Bonjour, il y peut-être une subtilité qui m'échappe mais pour quoi ne
pas le faire en une ligne?

awk '{print "premier="$1, "second="$2}' essai > resultat

par exemple.

--
---()()()----()()()----()()()--)()()(----)()()(----)()()(---
-()----()--()-()-----()----()--)(----)(-----)(-)(--)(----)(-
()----()----()()()----()()()----)()()(----)()()(----)(----)(

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/DebFrFrenchLists
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
Edi Stojicevic
* Alexandre [2008-03-19 11:55:28 +0000] wrote :

Bonjour, il y peut-être une subtilité qui m'échappe mais pour quoi ne
pas le faire en une ligne?

awk '{print "premier="$1, "second="$2}' essai > resultat

par exemple.



D'ou le sed que j'avais donnee :) Mais effectivement le awk est plus
clair :P

--
. ''`. (___/) E d i S T O J I C E V I C
: :' : (='.'=) http://www.debianworld.org
`. `~' (")_(") GPG: 0x1237B032
`-

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/DebFrFrenchLists
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
Jean-Paul Lacquement
Bonjour,

Perso, je code beaucoup en shell et je n'utilise jamais awk ni perl.
Je préconise sed et grep .
Voici une solution plus simple que d'utiliser awk :

while read variabale1 variable2
do
echo $variable1
echo $variable2
done < mon_fichier

Si le séparateur est un point virgule, il faut changer le "while" en ceci :

while IFS=; read variable1 variable2

Le lien suivant est très interessant : http://abs.traduc.org/abs-4.2.01-f r/

Cordialement,
Jean-Paul

2008/3/19, Edi Stojicevic :
* Alexandre [2008-03-19 11:55:28 +0000] wrote :


> Bonjour, il y peut-être une subtilité qui m'échappe mais pour qu oi ne
> pas le faire en une ligne?
>
> awk '{print "premier="$1, "second="$2}' essai > resultat
>
> par exemple.


D'ou le sed que j'avais donnee :) Mais effectivement le awk est plus
clair :P


--
. ''`. (___/) E d i S T O J I C E V I C
: :' : (='.'=) http://www.debianworld.org
`. `~' (")_(") GPG: 0x1237B032
`-