Précédent   Forum des professionnels en informatique > Systèmes > Linux > Applications > Shell
Shell Vos questions sur l'utilisation des commandes shell
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 14/04/2007, 17h01   #1
Membre confirmé
 
Avatar de fantomas261
 
Inscription : avril 2007
Messages : 463
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 463
Points : 227
Points : 227
Par défaut Tri d'un fichier texte, commande sort

coucou

pour finir mon tp de csh
je dois trier un fichier texte qui contient des information sur des livres
dont la structure est la suivante :

titre,(espace)par auteur

le titre peux etre constituer de plusieurs mots symboles chiffres
l auteur est toujours constitué d au moins 2 mots, le prenom, puis le nom
dans certains cas il existe plusieurs noms d'auteurs pour un meme ouvrage

mais certains livres peuvent contenir des resumés
exemple

titre, par auteur
<<
resumé
>>

on reconnait le resumé est il est entre << et >>

je dois ecrire une commande qui fait un tri sur les noms du 1er auteur et une autre sur les noms des titres
__________
autres questions

a quoi ca sert de donner la valeur C à LC_ALL
: LC_ALL C

est ce que c est possible sur supprimer avec sed la premiere ligne d un fichier juqu à un mot ou un caractere ?
fantomas261 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/04/2007, 23h19   #2
Membre expérimenté
 
Avatar de BlaireauOne
 
Inscription : mars 2007
Messages : 469
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : mars 2007
Messages : 469
Points : 576
Points : 576
Citation:
Envoyé par leopard261
coucou

.../...
titre,(espace)par auteur
.../...

Ça marche s'il n'y a pas de virgule dans le "titre"

Tri sur "titre" :

sort -t"," -k1,1 fichier.txt


Tri sur "auteur" :

sort -t"," -k2 fichier.txt
BlaireauOne est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/04/2007, 10h43   #3
Membre confirmé
 
Avatar de fantomas261
 
Inscription : avril 2007
Messages : 463
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 463
Points : 227
Points : 227
mais quand tu as un résumé tu fais comment?
fantomas261 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/04/2007, 22h15   #4
Membre expérimenté
 
Avatar de BlaireauOne
 
Inscription : mars 2007
Messages : 469
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : mars 2007
Messages : 469
Points : 576
Points : 576
Liste_brute.txt

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 
blabla 0
titre7, par auteur 27
titre6, par auteur 56
titre3, par auteur 43
<<
resumé 3.1
resumé 3.2
resumé 3.3
>>
blabla 1
titre1, par auteur 71
titre4, par auteur 34
blabla 2
blabla 3
titre2, par auteur 62
<<
resumé 2
>>
titre5, par auteur 15

Résultat :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
 
* Tri_auteur.txt
titre5, par auteur 15
titre7, par auteur 27
titre4, par auteur 34
titre3, par auteur 43
resumé 3.1
resumé 3.2
resumé 3.3
titre6, par auteur 56
titre2, par auteur 62
resumé 2
titre1, par auteur 71
 
* Tri_titre.txt
titre1, par auteur 71
titre2, par auteur 62
resumé 2
titre3, par auteur 43
resumé 3.1
resumé 3.2
resumé 3.3
titre4, par auteur 34
titre5, par auteur 15
titre6, par auteur 56
titre7, par auteur 27
Script :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
 
awk '
{
	if ($0 ~ /, par /) {
		Cle=$0
		EdNR=sprintf("%05d",NR)
		print $0, EdNR","$0
		next
	}
	if ($0 ~ /^<</) {
		while (getline Buffer > 0) {
			if (Buffer !~ /^>>/) {
				EdNR=sprintf("%05d",NR)
				print Cle, EdNR","Buffer
				continue
			}
			next
		}
	}
} ' Liste_brute.txt > Liste_a_trier.txt
 
sort -t"," -k1,1 Liste_a_trier.txt | cut -d"," -f3- > Tri_titre.txt
sort -t"," -k2,2 Liste_a_trier.txt | cut -d"," -f3- > Tri_auteur.txt
 
echo "* Tri_titre.txt"
cat Tri_titre.txt
 
echo ""
echo "* Tri_auteur.txt"
cat Tri_auteur.txt
BlaireauOne est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/04/2007, 16h01   #5
Membre confirmé
 
Avatar de fantomas261
 
Inscription : avril 2007
Messages : 463
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 463
Points : 227
Points : 227
c est bon mais j ai fais plus simple
fantomas261 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 02h37.


 
 
 
 
Partenaires

Hébergement Web