Traitement de fichier en Bash

Résolu/Fermé
marie54 - 23 juin 2010 à 13:26
 Marie54 - 24 juin 2010 à 13:16
Bonjour,

J'aimerais savoir comment je peux faire ça :

Voici mon fichier:
vdg121 421321 54512
fsd 2131ef2sd12
szdz4421
4212
212
Chaine
54215th trybtf2512
54212fhfgb 5212 vg
hk4121 254bhj hgj
Chaine2
fgdtb 121 121 dsfd
dgfchb 121 fdtgd5f4


J'aimerais couper les lignes en dessous Chaine mais sans ce qu'il y a en dessous de Chaine2 et les mettre dans un fichier texte.

Voici ce que je voudrais avoir dans l'autre fichier:

54215th trybtf2512
54212fhfgb 5212 vg
hk4121 254bhj hgj

Merci de votre aide

A voir également:

1 réponse

jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
23 juin 2010 à 13:57
Salut,

jp@MDK:~/tmpfs ssh$ cat plop
vdg121 421321 54512
fsd 2131ef2sd12
szdz4421
4212
212
Chaine
54215th trybtf2512
54212fhfgb 5212 vg
hk4121 254bhj hgj
Chaine2
fgdtb 121 121 dsfd
dgfchb 121 fdtgd5f4
jp@MDK:~/tmpfs ssh$ sed -n '/Chaine/,/Chaine2/{//d;p}' plop
54215th trybtf2512
54212fhfgb 5212 vg
hk4121 254bhj hgj
jp@MDK:~/tmpfs ssh$

;-))
1
Merci de ta réponse, et surtout d'y réponde vite :-D, car j'étais vraiment bloqué.
0
Pourrais tu m'expliquer la ligne s'il te plaît. Et j'aimerais savoir, c'est possible de faire ce traitement dans un fichier ce trouvant dans une clef USB? Car j'y arrive pas.
Merci
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
24 juin 2010 à 10:51
-n
Affichage conditionné. On affiche le résultat que sur demande avec le flag "p" (voir plus loin)


/Chaine/,/Chaine2/
Recherche des lignes comprises entre "/motif1/" et "/motif2/", y compris les motifs.


{
Regroupement de commandes (entre accolades) devant s'appliquer à la recherche.


//d
Les "//" représentent la mise en correspondance précédente d'une chaîne de caractères, autrement dit dans ton cas, elles représentes successivement "/Chaine/" et "/Chaine2/", auxquelles on applique la commande "d" (delete), afin de satisfaire à la condition initiale


p
On affiche les motifs correspondants aux critères...


}
Fin du regroupement de commandes.





Pour ta 2è question, si la clé est montée, il suffit soit de donner le chemin complet vers le fichier, soit de se rendre dans le dossier (cd /chemin/clé/répertoire) et de lancer la commande ensuite...
0
Merci beaucoup je vais voir si en mettant l'emplacement du fichier ça marche mieux.
0
Ca ne marche toujours pas. Voici mon code:
if [ "$1" = "telechargement" ]; then
cd /usb/$1/
mv "/var/log/$1/$2."* "/usb/$1/"
mv "/usb/$1/$2" "/usb/$1/$1-$port-$nom_fich.txt"
cd /usb/$1/$1-$port-$nom_fich.txt
sed -n "/P18/,/C04/{//d;p}" "$1-$port-$nom_fich.txt" >> $1-$port-$nom_fich.txt.reca
tar -czf "sauvegarde/$1-$port-$nom_fich.tar.gz" "$1-$port-$nom_fich.txt" "$1-$port-$nom_fich.txt.reca" "$2."*
rm "$1-$port-$nom_fich.txt" "$1-$port-$nom_fich.txt.reca" "$2."*
fi
}
Merci de ton aide. Ce que je voudrais c'est récupérer des données qui se trouvent dans $1-$port-$nom_fich.txt, en faire un fichier a part, et ensuite compresser le tout dans un dossier.
0