The UNIX and Linux Forums  

Go Back   Les systèmes UNIX et Linux Forums > Top Forums > De programmation et de script Shell
.
google unix.com



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
sed requête gopsman De programmation et de script Shell 4 02-03-2009 02:41 AM
Et dans la requête SQL Lindarella De programmation et de script Shell 3 10-09-2006 05:43 PM
Requête en awk raguramtgr UNIX pour les nuls Questions et réponses 1 08-27-2004 12:00 PM
RPM Requête silvaman UNIX for Advanced & Expert Users 1 08-15-2003 08:56 AM

Closed Thread
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered by Powered by Google
 
LinkBack Thread Tools Recherche sur ce Thread Rate Thread Modes d'affichage
  #1 (permalink)  
Old 12-07-2006
grinder182533 grinder182533 is offline
Registered User
  
 

Join Date: Nov 2006
Messages: 17
sed requête

J'ai une série de dossiers / temp / a / temp / b / temp / c

Dans les dossiers a, b et c, j'ai des fichiers
a1.txt ... ... .... a20.txt
b1.txt ... ... .... b40.txt &
c1.txt ... ... .... c60.txt

Chaque fichier a le même format de données: --

Ligne 1 AAAAA aaaa
Ligne 2 BBB bbbbbb
Ligne 3 CCCC cccccc
Etc etc

J'ai besoin d'écrire un sed script qui va parcourir tous les fichiers et reformater les données ainsi: --

Ligne 1 AAAAA aaaa
Ligne 2 BBB
Ligne 3 X bbbbbb
Ligne 4 CCCC cccccc
Etc etc

Donc j'ai besoin d'insérer un CR / LF dans la ligne 2 la position 4,
créer une nouvelle ligne 3 avec un texte (X) et la valeur de ce qui était à la droite de la ligne 2 (bbbbbb)
et déplacer les autres lignes, une ligne vers le bas.

Quelqu'un peut-il aider, s'il vous plaît?
Je ne sais pas sed très bien, awk et pas du tout.
  #2 (permalink)  
Old 12-07-2006
blowtorch's Avatar
chalumeau blowtorch is offline Forum Advisor  
Supporter
  
 

Join Date: Dec 2004
Lieu: Singapour
Messages: 2350
Est-ce que ce travail?

Code:
awk '{if(NR==2) print $1,"\nX",$2; else print}' filename > filename.new
mv filename.new filename

Exécuter ce par le biais d'une boucle sur chaque fichier.

Notez que j'ai supposé que le texte dans vos dossiers est juste que vous le montrer (exactement le même nombre et l'emplacement de l'espace de caractères spécifiques). Même s'il ne l'est pas, vous avez juste besoin de changer un peu la awk.
  #3 (permalink)  
Old 12-08-2006
anbu23 anbu23 is offline Forum Advisor  
Registered User
  
 

Join Date: Mar 2006
Lieu: Bangalore, Inde
Posts: 1398
SED solution


Code:
cd /a
for file in *
do
    sed "2 s/\(...\).\(.*\)/\1\\
    X \2/" $file > tmp
    mv tmp $file
done

  #4 (permalink)  
Old 12-08-2006
grinder182533 grinder182533 is offline
Registered User
  
 

Join Date: Nov 2006
Messages: 17
sed solution

Merci Anbu23
Lorsque j'ai posté hier, j'ai simplifié mon problème, en pensant que je pourrais suivre votre logique, et de les appliquer à mon problème.
En fait, c'est la ligne 5 position 32 avant que le CR / LF est inséré.
La nouvelle ligne 6 contient le texte de la position fixe de 1 à 31 inclus, (X)
et de la position 32 à 34 de la ligne 5 sera tombée à la même position sur la ligne 6.
J'ai essayé
sed "5 s / \ (... \). \ (.* \) / \ 1 \ \
X \ 2 / "$ file> tmp
mais il reste encore répandue au bout de 3 caractères.

J'ai essayé
sed "5 s / \ (............................. \). \ (.* \) / \ 1 \ \
X \ 2 / "$ file> tmp
mais j'ai reçu une erreur de syntaxe.
J'espère que vous pourrez obtenir une aide supplémentaire.
Merci
  #5 (permalink)  
Old 12-08-2006
anbu23 anbu23 is offline Forum Advisor  
Registered User
  
 

Join Date: Mar 2006
Lieu: Bangalore, Inde
Posts: 1398
Auparavant, vous avez dit que, après quelques premiers chars dans certains ligne doit être transféré à la ligne suivante avec X. Mais maintenant vous dites que vous avez besoin initial char et X et les autres car dans la nouvelle line.I ne suis pas en mesure pour vous.
Pouvez-vous me donner par exemple?
  #6 (permalink)  
Old 12-08-2006
grinder182533 grinder182533 is offline
Registered User
  
 

Join Date: Nov 2006
Messages: 17
sed exemple

Salut Anbu23

d'entrée

Ref: 12345678 M ^
Valeur Date: 28-mai-2006 M ^
Débit A / c: 54321235 - M ^ abcdef
Client: 100210547 - abcdef ^ M
Débit Montant: 9999999999.00 ^ M USD
Description: fil à Wxxxxxx ^ M
^ M
Taux de change: 1,00000 M ^
etc etc

devrait se transformer en

Ref: 12345678 M ^
Valeur Date: 28-mai-2006 M ^
Débit A / c: 54321235 - M ^ abcdef
Client: 100210547 - abcdef ^ M
Débit Montant: 9999999999.00 M ^
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ^ M USD
Description: fil à Wxxxxxx ^ M
^ M
Taux de change: 1,00000 M ^
etc etc

de coupe et de collage de l'écran a compensé ci-dessus,
mais ma ligne 5 position 31 est correcte.
S'il vous plaît noter également qu'il ya beaucoup de dossiers dans chaque fichier,
et tous doivent être reformatés.
Un grand merci encore
Je ne vous remercions de votre soutien.
  #7 (permalink)  
Old 12-08-2006
cskumar cskumar is offline
Registered User
  
 

Join Date: Oct 2005
Posts: 67
Essayez celui-ci

awk '(if (match ($ 0, "USD")) (print $ 1 $ 2 $ 3, "\ nxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", $ 4) print $ 0)' fichier> newfile

J'espère USD ne viendra que dans Debit Montant: domaine.

Observe,
cskumar
Closed Thread

Bookmarks

Thread Tools Recherche sur ce Thread
Recherche sur ce Thread:

Recherche avancée
Modes d'affichage Rate this thread
Rate this thread:

Règles de messages
Tu mai pas de nouvelles discussions: nonoui
Tu mai pas envoyer des réponses:
Tu mai pas envoyer des pièces jointes
Tu mai pas modifier vos messages

BB code est Sur
Smilies sont Sur
[IMG] code est Sur
Le code HTML est Hors tension
Trackbacks sont Sur
Pingbacks sont Sur
Refbacks sont Sur




Toutes les heures sont au format GMT -4. Le temps est maintenant 12:27 AM.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Traductions Langue Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
Les systèmes UNIX et Linux Forums Content Copyright © 1993-2009. Tous droits Reserved.Ad de gestion par RedTyger

Content Relevant URLs par vBSEO 3.2.0