![]() |
|
|
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 les deux schémas et de supprimer un modèle | ppat7046 | De programmation et de script Shell | 7 | 04-08-2009 10:19 AM |
| Supprimer des lignes entre deux modèles, sans suppression de la deuxième structure | Ilja | De programmation et de script Shell | 1 | 11-14-2008 09:53 AM |
| Grep Toutes les lignes entre 2 modèles différents | gurpreet470 | De programmation et de script Shell | 2 | 11-07-2008 04:45 PM |
| Obtenir les lignes entre la dernière apparition de deux modes de | RvZ | De programmation et de script Shell | 8 | 08-08-2008 06:32 PM |
| Comment obtenir des lignes entre les deux modèles? | racbern | De programmation et de script Shell | 11 | 04-23-2008 08:28 AM |
![]() |
|
|
LinkBack | Thread Tools | Recherche sur ce Thread | Rate Thread | Modes d'affichage |
|
|
|
||||
|
supprimer les lignes entre les modes
Salut, j'ai cherché dans ce forum tout au long de la journée, mais n'a pas été en mesure de trouver suffisamment de codes pour m'aider à faire une tâche. Le seul code que je peux arriver à ceci:
sed '/ [0-9] [0-9] /, / [0-9] [0-9] / (/ / p; d;)' inputfile> outputfile Je voudrais sed/awk / grep un fichier de deux modèles, puis supprimer la ligne de démarcation entre ces modèles. S'il vous plaît voir le inputfile ci-dessous. Ce n'est qu'une petite partie d'une longue file. Tout en gras devrait être supprimée. Dans ce cas, je veux faire une recherche pour le premier modèle [0 0 2], et le dernier modèle [2433 2433 2], puis supprimez toutes les lignes entre ces modèles, mais de maintien de la ligne [ANT_2] au-dessus de la ligne [2433 2433 2] . De même, je veux faire une recherche pour le premier modèle [0 0 4] et le dernier modèle [1 1 2], puis supprimez toutes les lignes entre ces modèles, mais de maintien de la ligne [ANT_6] au-dessus de la ligne [1 1 2]. Le nombre de lignes entre ces pattens peut varier. La seule chose que je peux voir qui est constant est [0 0]. Toute aide ou suggestion serait grandement appréciée. inputfile -------- ANT_1 0 0 2 janvier 14 10:11:44 2009 Règle fichier pathname: / home / la / _drc_ porte à plis zone ratio> 500 ANT_2 2433 2433 2 janvier 14 10:13:46 2009 Règle fichier pathname: / home / la / _drc_ MT1 porte à la zone ratio> 40 p 1 44 -2109300 -10645700 -2095600 -10645700 -2095600 -10649700 -2088500 -10649700 -2088500 -10655700 -2071900 -10655700 ANT_3 0 0 2 janvier 14 10:13:59 2009 Règle fichier pathname: / home / la / _drc_ MT2 diff porte intrants. ANT_4 0 0 2 janvier 14 10:14:01 2009 Règle fichier pathname: / home / la / _drc_ or diff porte intrants. ANT_5 0 0 4 janvier 14 10:14:01 2009 Règle fichier pathname: / home / la / _drc_ or diff porte intrants. ANT_6 1 1 2 janvier 14 10:14:01 2009 Règle fichier pathname: / home / la / _drc_ or diff porte intrants. NET_AREA_RATIO_RDBS 0 0 3 janvier 14 10:14:01 2009 ANT2.OUT ANT3.OUT ANT4.OUT Desired outputfile ---------------- ANT_2 2433 2433 2 janvier 14 10:13:46 2009 Règle fichier pathname: / home / la / _drc_ MT1 porte à la zone ratio> 40 p 1 44 -2109300 -10645700 -2095600 -10645700 -2095600 -10649700 -2088500 -10649700 -2088500 -10655700 -2071900 -10655700 ANT_6 1 1 2 janvier 14 10:14:01 2009 Règle fichier pathname: / home / la / _drc_ or diff porte intrants. |
|
||||
|
Ghostdog, Im ne savez pas par où le plus d'Unix / Linux Forum parce que je ne pouvais pas trouver dans ce forum liste. J'ai été en mesure d'obtenir un code de ce forum et de les appliquer à ce que je fais. Il n'est pas exact, mais il est proche. code ----- Code:
#!/bin/bash
function drcext
{
# Extract one line above and two lines below a pattern
awk '/[1-9] [1-9] /{ before-=1;after=2; next }
after { after--;next }
{ store[++before]=$0}
END {
for(i=1;i<=before;i++) {
print store[i]
}
}' b > c
diff b c > d
sed -i 's/[0-9]*,[0-9]*[a-z]*[0-9]*/----------------------------------------------------------------/g' d
sed -i 's/< //g' d
# Add a variable content to the beginning of the file
rulepath=`grep Rule d`
sed -i '/Rule/d' d
sed "1i $rulepath" < d > e
}
drcext
Ceci est mon fichier d'entrée: inputfile b --------- Code:
die1 1000 WARN_1 0 0 2 May 4 16:20:21 2009 Rule File Pathname: /coms Rule File Pathname: /home/la/_tij4_drc_ TEOS_CH minimum spacing to VIA_1 is 10.0u, must not overlap 23_K 1 1 2 May 4 16:24:00 2009 Rule File Pathname: /home/la/_tij4_drc_ TEOS_CH must be enclosed by Metal_3 10um min p 1 4 CN tmplt c 1 0 0 1 0 0 -1512633 -8706882 -1507100 -8715212 -1507100 -8668836 -1512633 -8677166 Rule File Pathname: /home/la/_tij4_drc_ SU8_chm to Bond Pad min space is 10 um 45_D2 20 20 2 May 4 16:30:03 2009 Rule File Pathname: /home/la/_tij4_drc_ SU8_chm to Bond Pad at the end of a row min space is 100 um e 1 2 CN die1 c 1 0 0 1 0 0 -1366000 -9000000 -1366000 -8991408 -1461658 -9029146 -1457396 -9031988 e 2 2 -1366000 -9000000 -1366000 -8981773 -1457396 -9031988 -1450898 -9034615 e 3 2 -1366000 -8804227 -1366000 -8800000 Rule File Pathname: /home/la/_tij4_drc_ Primer must be enclosed by SU8_prm AT_1 2 2 2 May 4 16:30:20 2009 Rule File Pathname: /home/la/_tij4_drc_ target must be covered by (drawn) dso p 1 36 CN target_bondalign c 1 0 0 1 -1676600 7170000 -24000 0 -23635 -4168 Rule File Pathname: /home/la/_tij4_drc_ SU8_prm must overlap dso over gld_tgt by 3um min AT_5 2 2 2 May 4 16:30:20 2009 Rule File Pathname: /home/la/_tij4_drc_ SU8_prm/chm/nzl not allowed over gld_tgt p 1 36 CN target_bondalign c 1 0 0 1 -1676600 7170000 -24000 0 -23635 -4168 -22553 -8208 -20785 -12000 -18385 -15427 Rule File Pathname: /home/la/_tij4_drc_ contact not allowed in stitch zone su8_14_26A 55 55 2 May 4 16:30:30 2009 Rule File Pathname: /home/la/_tij4_drc_ NOZZLE minimum width is 10um (for 14um thick material) p 1 114 CN resistor_array c 1 0 0 1 0 0 -1052100 -7525307 -1052067 -7525796 -1052066 -7525803 -1051974 -7526268 Ceci est mon fichier de sortie: outputfile e ----------- Code:
Rule File Pathname: /home/la/_tij4_drc_ ---------------------------------------------------------------- 23_K 1 1 2 May 4 16:24:00 2009 TEOS_CH must be enclosed by Metal_3 10um min ---------------------------------------------------------------- AT_1 2 2 2 May 4 16:30:20 2009 target must be covered by (drawn) dso ---------------------------------------------------------------- AT_5 2 2 2 May 4 16:30:20 2009 SU8_prm/chm/nzl not allowed over gld_tgt ---------------------------------------------------------------- su8_14_26A 55 55 2 May 4 16:30:30 2009 NOZZLE minimum width is 10um (for 14um thick material) Je ne sais pas pourquoi la commande awk supprimer les lignes qui sont trouvées par le modèle de recherche [1-9] [1-9]. L'affichage de l'origine, ce code est d'extraire une ligne au-dessus et les deux lignes ci-dessous la structure [1-9] [1-9]. Ce code est en arrière. Il supprime la place de l'extrait que la raison pour laquelle je dois utiliser le diff pour obtenir les lignes qui ont été supprimer. S'il vous plaît laissez-moi savoir comment recode pour en extraire au lieu de supprimer. Il ya un problème avec ce code que je ne comprends, c'est que je utiliser le modèle [1-9] [1-9], il ne devrait pas être l'extraction de la ligne: 55 55 2 Mai 4 16:30:30 2009 Mais c'est ce que je voulais. Je veux aussi que la ligne: 20 20 2 Mai 4 16:30:03 2009 Mais il n'a pas été extrait. Comment puis-je changer la configuration / [1-9] [1-9] /, de sorte que il vous permet de trouver n'importe quelle chaîne, c'est-à-dire, 55 55 2 ou 20 20 2? J'ai essayé un autre motif / [1-9] * [1-9] * / ou quelque chose le long de cette ligne, mais il ne fonctionne pas. Désolé pour la longue, mais toute demande de conseiller serait grandement appréciée. Ceci est mon code: Dernière édition par vgersh99; au 05.28.2009 04:01 PM.. Motif: Ajout de balises de code |
| Bits Awarded / shamushamu d'accusation pour ce post | |||
| Date | Utilisateur | Commentaire | Montant |
| 05-28-2009 | vgersh99 | N / A | 0 |
|
||||
|
Sorry about that, vgersh99. Je suis nouveau à Linux et à ce forum. Je viens de trouver et corriger mes codes. J'ai changé le schéma de: Code:
awk '/^[1-9]/{ before-=1;after=2; next }
Mais je suis toujours très curieux de voir si quelqu'un a une meilleure solution que cela. Je pense que cela peut être fait en quelques lignes. |
![]() |
| Bookmarks |
| Thread Tools | Recherche sur ce Thread |
| Modes d'affichage | Rate this thread |
|
|