OVH Cloud OVH Cloud

script shell : casse tête fusion fichiers -Help !

4 réponses
Avatar
elena.mora
On m'a posé une colle, peut-être l'un d'entre vous maîtrise t' il ce
genre de casse-tête ?

Je dois réaliser deux scrips shell :

Un script shell pour fusionner plusieurs fichiers texte en un seul
(jusque là ça va ) en insérant à chaque fusion le nom du fichier .
Un petit exemple :

Fic-1 - Contenu : AAA
Fic-2 - Contenu : BBB
Fic-3 - Contenu : CCC

Contenu du fichier fic-fusion en sortie :
Fic-1
AAA
Fic-2
BBB
Fic-3
CCC

Un autre script pour effectuer l'opération inverse :

A partir de fic-fusion reconstituer les fichiers de départ :
Fic-1 - Contenu : AAA
Fic-2 - Contenu : BBB
Fic-3 - Contenu : CCC

Un gros merci à celui ou ceux qui sauront me tirer de ce guépier…

4 réponses

Avatar
Pascal Bourguignon
(elena) writes:

On m'a posþÿé une colle, peut-þÿêtre l'un d'entre vous maþÿîtrise t' il ce
genre de casse-tþÿête ?

Je dois rþÿéaliser deux scrips shell :

Un script shell pour fusionner plusieurs fichiers texte en un seul
(jusque lþÿà þÿça va ) en insþÿérant þÿ à chaque fusion le nom du fichier .
Un petit exemple :

Fic-1 - Contenu : AAA
Fic-2 - Contenu : BBB
Fic-3 - Contenu : CCC

Contenu du fichier fic-fusion en sortie :
Fic-1
AAA
Fic-2
BBB
Fic-3
CCC


Ce format n'est pas invertible! Comment distinguer le nom du fichier
du contenu?

Un autre script pour effectuer l'opþÿération inverse :

A partir de fic-fusion reconstituer les fichiers de dþÿépart :
Fic-1 - Contenu : AAA
Fic-2 - Contenu : BBB
Fic-3 - Contenu : CCC

Un gros merci þÿà celui ou ceux qui sauront me tirer de ce guþ ÿépierþÿ…


Une solution simple est celle ci:

Pour fusionner: tar cf fusion.tar Fic-*
Pour dþÿéfusionner: tar xf fusion.tar

þÿÀ la place de tar, on peut aussi utiliser: ar ou shar.

ar c fusion.ar Fic-*
ar x fusion.ar

Pour des fichiers de texte shar est pratique car pour dþÿéfusionne r on a
juste besoin du shell:

shar Fic-* fusion.shar
sh fusion.shar


Si tu veux une solution 100% shell, vois shar.sh au lieu de shar.


--
__Pascal Bourguignon__ http://www.informatimago.com/

In a World without Walls and Fences,
who needs Windows and Gates?

Avatar
Stephane Chazelas
2005-03-12, 03:03(-08), elena:
On m'a posé une colle, peut-être l'un d'entre vous maîtrise t' il ce
genre de casse-tête ?

Je dois réaliser deux scrips shell :

Un script shell pour fusionner plusieurs fichiers texte en un seul
(jusque là ça va ) en insérant à chaque fusion le nom du fichier .
Un petit exemple :

Fic-1 - Contenu : AAA
Fic-2 - Contenu : BBB
Fic-3 - Contenu : CCC

Contenu du fichier fic-fusion en sortie :
Fic-1
AAA
Fic-2
BBB
Fic-3
CCC


#! /bin/sh -
awk '
FNR == 1 {
print FILENAME
}
{print}
' Fic-[123] > fic-fusion

(ca ommet les fichiers vides).

ou:

#! /bin/sh -
for f in Fic-[123]; do
{
printf '%sn' "$f"
cat
} < "$f"
done > fic-fusion

Un autre script pour effectuer l'opération inverse :

A partir de fic-fusion reconstituer les fichiers de départ :
Fic-1 - Contenu : AAA
Fic-2 - Contenu : BBB
Fic-3 - Contenu : CCC
[...]


#! /bin/sh -
awk '
/^Fic-[123]$/ {
if (fn != "") close(fn)
fn = $0
next
}
fn != "" {
print > fn
}
' < fic-fusion

(ca ne cree pas de fichier vide).

--
Stéphane

Avatar
Pascal Bourguignon
(elena) writes:

On m'a posé une colle, peut-être l'un d'entre vous maîtrise t' il ce
genre de casse-tête ?

Je dois réaliser deux scrips shell :

Un script shell pour fusionner plusieurs fichiers texte en un seul
(jusque là ça va ) en insérant à chaque fusion le nom du fichier .
Un petit exemple :

Fic-1 - Contenu : AAA
Fic-2 - Contenu : BBB
Fic-3 - Contenu : CCC

Contenu du fichier fic-fusion en sortie :
Fic-1
AAA
Fic-2
BBB
Fic-3
CCC


Ce format n'est pas invertible! Comment distinguer le nom du fichier
du contenu?

Un autre script pour effectuer l'opération inverse :

A partir de fic-fusion reconstituer les fichiers de départ :
Fic-1 - Contenu : AAA
Fic-2 - Contenu : BBB
Fic-3 - Contenu : CCC

Un gros merci à celui ou ceux qui sauront me tirer de ce guépier


Une solution simple est celle ci:

Pour fusionner: tar cf fusion.tar Fic-*
Pour défusionner: tar xf fusion.tar

À la place de tar, on peut aussi utiliser: ar ou shar.

ar c fusion.ar Fic-*
ar x fusion.ar

Pour des fichiers de texte shar est pratique car pour défusionner on a
juste besoin du shell:

shar Fic-* fusion.shar
sh fusion.shar


Si tu veux une solution 100% shell, vois shar.sh au lieu de shar.


--
__Pascal Bourguignon__ http://www.informatimago.com/

In a World without Walls and Fences,
who needs Windows and Gates?

Avatar
elena.mora
Une solution simple est celle ci:

Pour fusionner: tar cf fusion.tar Fic-*
Pour défusionner: tar xf fusion.tar



Je dois avoir un don pour compliquer les choses...je me suis embêtée
des heures à tenter de manipuler mes fichiers !
Merci beaucoup.