![]() |
Bonjour et bienvenu par les États-Unis à la UNIX et Linux Forums! Merci de votre visite et vous joindre à notre communauté mondiale.
|
|
google unix.com
|
|||||||
| Forums | S'inscrire | Forum Rules | Liens | Albums | FAQ | Liste des membres | Calendrier | Recherche | Aujourd'hui, les postes | Marquer les forums comme lus |
| De programmation et de script Shell Posez vos questions à propos de KSH, CSH, SH, BASH, PERL, PHP, SED, awk et d'autres scripts shell et les langages de script shell ici. |
Plus d'UNIX et Linux Forum Sujets Vous trouverez peut-être utile
|
||||
| Fil | Thread Starter | Forum | Réponses | Last Post |
| comment convertir des fichiers de longueur fixe fichier délimité. | satyam_sat | De programmation et de script Shell | 7 | 04-03-2008 03:41 AM |
| Conversion d'un fichier délimité à largeur fixe fichier | raghavan.aero | De programmation et de script Shell | 2 | 06-06-2007 03:44 PM |
| convertir fichier XML en fichier texte (longueur fixe) | ram2s2001 | De programmation et de script Shell | 0 | 11-03-2005 01:28 AM |
| Convertir délimité de longueur fixe | nelson553011 | De programmation et de script Shell | 14 | 10-27-2005 05:04 PM |
| comment peut changer udp longueur? | Vvlad | IP Networking | 4 | 08-14-2003 08:37 AM |
![]() |
|
|
LinkBack | Thread Tools | Recherche sur ce Thread | Rate Thread | Modes d'affichage |
|
|
|
||||
|
Peut-on convertir un '|' dans un fichier de longueur fixe?
Salut tous,
J'ai un tuyau séparé file.But plat, il ya souvent un problème avec le records.So est-il possible de convertir les' | 'fichier séparé dans un fichier de longueur fixe, par le biais de certains scripts. Le fichier comporte 11 colonnes, qui signifie 10 pipes.Your aide est appréciée. J'utilise Sun OS Version 5.10 Merci, Kumar |
|
||||
|
Comme les "champs" dans votre fichier sont séparées par un char ("|") utilisation couper de les séparer, puis de l'imprimer via les lignes printf (i Kornshell assumer ici, de l'utilisation 'echo' au lieu de 'print' si vous utilisez autre chose):
Code:
cat infile | while read line ; do
# split each input line to fields and catch these in variables
field1="$(print - "$line" | cut -d'|' -f1)"
field2="$(print - "$line" | cut -d'|' -f2)"
field3="$(print - "$line" | cut -d'|' -f3)"
.....
# after you are done with the line print it out again
# i assume here that the first column should be 20 chars wide, the next
# two 15, and so on. see the second example below.
printf '%20s %15s %15s [...]\n' "$field1" "field2" "$field3" [...] >> outfile
done
Code:
maxlength1=0
maxlength2=0
....
cat infile | while read line ; do
# in the first run we split and get the max width for each column
field1="$(print - "$line" | cut -d'|' -f1)"
length1=$(print - "$field1" | wc -c)
if [ $length1 -gt $maxlength1 ] ; then
maxlength1=$length1
fi
field2="$(print - "$line" | cut -d'|' -f2)"
length2=$(print - "$field2" | wc -c)
if [ $length2 -gt $maxlength2 ] ; then
maxlength2=$length1
fi
.....
done
# put together the output template for printf
template='%'"$maxlength1"'s %"'$maxlength2"'s [.....]\n'
cat infile | while read line ; do
# in the second run we split again and print using the found widths
field1="$(print - "$line" | cut -d'|' -f1)"
field2="$(print - "$line" | cut -d'|' -f2)"
....
printf "$template" "$field1" "field2" "$field3" [...] >> outfile
done
Bakounine |
![]() |
| Bookmarks |
| Thread Tools | Recherche sur ce Thread |
| Modes d'affichage | Rate this thread |
|
|