![]() |
|
|
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 |
| Parsing de fichier pour le rapport de génération (String d'analyse et de division) | umar.shaikh | De programmation et de script Shell | 8 | 03-02-2009 01:38 AM |
| l'analyse de champ de longueur fixe avec yacc / bison | sungita | High Level Programming | 1 | 01-27-2009 11:27 AM |
| Lire une chaîne de caractères avec des espaces et de trouver la longueur de la chaîne | dayamatrix | UNIX pour les nuls Questions et réponses | 2 | 11-13-2008 10:08 AM |
| Parsing un record de longueur variable | Barb | UNIX pour les nuls Questions et réponses | 17 | 10-01-2004 09:37 AM |
| Analyse des données et de conserver toute la longueur de la variable | app4dxh | De programmation et de script Shell | 3 | 11-22-2002 12:04 PM |
![]() |
|
|
LinkBack | Thread Tools | Recherche sur ce Thread | Rate Thread | Modes d'affichage |
|
|
|
||||
|
Parsing 286 longueur de chaîne de caractères
Salut amis,
Je l'ai. Txt qui a 13000 dossiers. Chaque enregistrement est 278 caractères de long. J'utilise le code ci-dessous pour en extraire la chaîne et il faut près de 10 minutes. Toute suggestion s'il vous plaît. cat nom_fichier.txt | tout lire en ligne faire f1 \u003d `echo $ line | awk '(print substr ($ 1,1,9))'` f2 \u003d `echo $ line | awk '(print substr ($ 1,10,20))'` f3 \u003d `echo $ line | awk '(print substr ($ 1,30,50))'` f4 \u003d `echo $ line | awk '(print substr ($ 1,80,10))'` f5 \u003d `echo $ line | awk '(print substr ($ 1,90,50))'` f6 \u003d `echo $ line | awk '(print substr ($ 1,140,10))'` f7 \u003d `echo $ line | awk '(print substr ($ 1,150,50))'` f8 \u003d `echo $ line | awk '(print substr ($ 1,200,10))'` f9 \u003d `echo $ line | awk '(print substr ($ 1,210,50))'` f10 \u003d `echo $ line | awk '(print substr ($ 1,260,10))'` f11 \u003d `echo $ line | awk '(print substr ($ 1,270,8))'` f12 \u003d `echo $ line | awk '(print substr ($ 1,278,8))'` s1 \u003d `echo $ f1" | "$ f2" | "$ f3" | "$ f4" | "$ f5" | "» s2 \u003d `echo $ f6" | "$ f7" | "$ f8" | "» s3 \u003d `echo $ f9" | "$ f10" | "» s4 \u003d `echo $ f11" | "$ f12» echo $ s1 $ s2 $ s3 $ s4>> FinalResult.txt fait |
|
||||
|
Un simple méthode est de créer de script parse.awkCode:
{
f1=substr($1,1,9);
f2=substr($1,10,20);
f3=substr($1,30,50);
f4=substr($1,80,10);
f5=substr($1,90,50);
f6=substr($1,140,10);
f7=substr($1,150,50);
f8=substr($1,200,10);
f9=substr($1,210,50);
f10=substr($1,260,10);
f11=substr($1,270,8);
f12=substr($1,278,8);
OFS="|";
print f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12;
print "\n";
}
Ensuite, exécutez Code:
awk -f parse.awk filename.txt > FinalResult.txt Je pense que votre code d'origine est de prendre le temps que chaque backtick, echo et awk est un nouveau processus de frai |
|
|||||
|
|
||||
|
Salut ppl ..
Que faire si j'ai de la ligne comme ce A BCD ce qui indique que le premier champ est f1 \u003d A, f2 \u003d f3 \u003d BCD c'est-à-dire second champ vide de 6 caractères. Alors maintenant, si je utiliser le script ci-dessus, je ne suis pas en mesure d'obtenir les champs dans cette affaire. Pouvez-vous s'il vous plaît penser, dans ce cas, comment faire? Cheers Amit |
|
|||||
|
![]() |
| Bookmarks |
| Thread Tools | Recherche sur ce Thread |
| Modes d'affichage | Rate this thread |
|
|