![]() |
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 |
| Supprimer la ligne en fichier texte | Berserk | UNIX pour les nuls Questions et réponses | 6 | 12-16-2008 03:44 PM |
| Comment supprimer un texte sans ouvrir le fichier. | stevefox | De programmation et de script Shell | 12 | 02-21-2008 01:24 PM |
| Supprimer la première ligne à partir de n'importe quel fichier texte? | aungomarin | De programmation et de script Shell | 5 | 05-16-2006 10:42 PM |
| comment supprimer immédiatement le texte dans un fichier? | forevercalz | De programmation et de script Shell | 5 | 01-08-2006 10:28 PM |
| supprimer la dernière ligne du fichier texte | hcclnoodles | De programmation et de script Shell | 4 | 06-25-2002 10:52 AM |
![]() |
|
|
LinkBack | Thread Tools | Recherche sur ce Thread | Rate Thread | Modes d'affichage |
|
|
|
||||
|
Ecraser et Supprimer dans un fichier texte
Chers tous,
J'ai fichier texte comme ceci: Header Record 1 Record 2 ....... Record n Tail Cette ligne de code: awk '(if (NR \u003d\u003d 1) (head \u003d substr ($ 0,1,300);) else (last \u003d substr ($ 0,1,300);) END (printf "Header est: Trailer 300% est:%-300 \ n ", la tête, la dernière) 'filename Trailer-tête et converti en une ligne et dans les 300 caractères each.The sortie est une seule ligne. Maintenant, je veux remplacer cette ligne au-dessus (en-tête + la queue) au cours de la première ligne du fichier d'origine (original header) et supprimer la queue ........ i pouvez copier cet en-tête et la queue à nouveau fichier, puis ajouter des enregistrements 1 à n à l'enregistrement de ce nouveau fichier, mais qui cause trop faible performance ........ Je pense que mieux pour mettre à jour la première et la dernière ligne de ce fichier ........... ...... oui, comment puis-je faire cela? c'est-à -dire 1-mise à jour de l'en-tête de ligne c'est-à -dire (header + trailer) 2-supprimer la queue dans le fichier original (mai utiliser coupe tail -1 nom de fichier?) |
|
||||
|
Dont bosse votre question par l'ouverture d'un nouveau fil. Vous pouvez le régler dans votre ancien fil
Tête et pied de page |
|
||||
|
Enregistrer la sortie de l'awk dans une variable comme
Code:
New_head=$(awk '{ if ( NR == 1 ) { head=substr($0,1,300);} else { last = substr($0,1,300);}END{printf "Header is : %-300s Trailer is : %-300s\n", head, last}' filename )
Code:
sed -e "1 c\ $New_head" -e '$d' filename |
|
||||
|
Merci ..... J'ai essayé le code, mais sed commande ne fonctionne pas correctement, il donne en sortie:
sed: Commande tronqués: 1 c \-tête est: est Headervalue ....... Trailer: Trailer valeur ..... Il ne fait pas de changement dans le fichier ainsi. |
|
||||
|
Il a été un autre fil que Lorcan dit et cela semble être que la continuation du fil ci-dessus dans un nouveau poste.
S'il vous plaît continuer à poser votre question dans le même fil de sorte qu'il serait plus facile de suivre plutôt que de commencer un nouveau fil pour la même question. En supposant que j'ai bien compris votre essayer cette exigence, Code:
awk ' { if ( NR == 1 ) { head=$0 } else { last = $0 } arr[i++]=$0; }END{ printf "Header is : %s Trailer is : %s\n", head, last; for( x=0; x<i-1; x++) { print arr[x] } }' filename
Code:
Header is : header Trailer is : trailer header record 1 record 2 record 3 tête est disponible tous les enregistrements sont affichés enregistrement ne s'affiche pas Si ce n'est pas ce que vous aviez demandé, nous le faire savoir ![]() |
|
||||
|
ok c'est bien, mais j'ai été juste préoccupé par le nombre de fichiers créés ........ il ya un problème que je suis une ligne supplémentaire (ligne blanche) à la fin du fichier ....... .... pourquoi en utilisant ce code:
awk '(if (NR \u003d\u003d 1) (head \u003d substr ($ 0,1,149);) else (last \u003d substr ($ 0,1,149);) arr [i ++]\u003d$ 0;) END (printf "% 149s% -- 149s \ n ", la tête, la dernière, pour (x \u003d 1; x <i-1; x++) (print arr[x]) }'file1> file2 Quand j'ai ouvert file2, j'obtiens une ligne supplémentaire .......? |
![]() |
| Bookmarks |
| Thread Tools | Recherche sur ce Thread |
| Modes d'affichage | Rate this thread |
|
|