![]() |
|
|
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 faire pour remplacer tous les caractères de nouvelle char. | mightysam | De programmation et de script Shell | 5 | 09-18-2008 09:15 PM |
| extraction de la dernière, mais un char dans une ligne | hidnana | De programmation et de script Shell | 1 | 02-14-2008 08:48 AM |
| AWK extraction | harris2107 | De programmation et de script Shell | 2 | 01-15-2008 11:44 AM |
| AWK extraction | harris2107 | De programmation et de script Shell | 3 | 08-17-2007 06:02 AM |
| Aide à l'extraction de goudron! | manthasirisha | De programmation et de script Shell | 4 | 03-17-2006 07:17 AM |
![]() |
|
|
LinkBack | Thread Tools | Recherche sur ce Thread | Rate Thread | Modes d'affichage |
|
|
|
||||
|
extraction de la dernière, mais un char
J'ai besoin d'extraire le caractère avant le dernier "|" dans les lignes suivantes, qui sont des «N» et «U». Le dernier "|" ne doit pas être extrait. En outre, la no.s de "|" mai varier d'une ligne, mais j'ai besoin que le caractère avant le dernier.
TT-CAP-N241485-0005241485 | Administrateur | INC_ORGANISATION_NAME | SUPERIOR_TITLE_1 | REV | FIRST_NAME_1 | MIDDLE_NAME_1 | SURNA ME_FIELD | Adresses INC 1 | INC adresse 2 | adresse INC 3 | Adresses INC 4 | INC Adresses 5 | Adresses INC 6 | IN123EC | MALTE | Y | | M | | Y | LIFEASSURED 2 | Y | N |||||||||||||||||||||||| Y | | Y ||||||| ||||| PRU | A | | 289,832 | | | FCBGFBF | Y | Y | 1 | DC | 1 | 1 | 3 | O | O | | 20300601 | | | CAP | 5649369 | VVUMU7SMT0 | HCBCBFDJF | N | O | N | O | O | N | O | O | N | 3 | | 6 | C | 20051205 | 555555555 ||||| 20070604 | 4 | 15 | | C | 0 | 9 | 4527 | 0 | | 20071109 | 4 | C | 982062 | 23569837 | 36657407 | 9096 | | 20071205 | 1 | N | TT-CAP-5241492-0005241492 | ADMINISTRATOR1 | INC_ORGANISATION_NAME | SUPERIOR_TITLE_1 | MS | FIRST_NAME_1 | MIDDLE_NAME_1 | SURNA ME_FIELD | Adresses INC 1 | INC adresse 2 | adresse INC 3 | Adresses INC 4 | INC Adresses 5 | Adresses INC 6 | IN123EC | | N | | F | | N | VIE ASSURÉE 1 | Y | N |||||||||||||||||||||||| Y | | Y ||||||| ||||| PRU | ODR | | 200,006 | | | EB | X | Y | 3 | DC | 2 | 1 | 3 | O | O | | 20301207 | | | CAP | 5649376 | ZLBFQDGVGIOIJDHKNDK | F | N | O | O | N | O | N | N | O | N | 4 | | 7 | C | 20051205 | 555555555 ||||| 20070604 | 2 | 1600770 | | B | 281215 | 66 | 124,002 | 923,545 | | 20060405 | 1 | C | 1446100 | 92811 | 64148521 | 5 | | 20071205 | 1 | U | Je ne suis pas en mesure de parvenir à réduire par commande. Comment peut-il être fait? Dernière édition par hidnana; au 02.14.2008 06:06 AM.. |
|
||||
|
vous pouvez utiliser awk, régler le séparateur de champs de FS "|", puis d'utiliser la marque NF incorporé variable pour obtenir le dernier champ. pour la dernière seconde le terrain, l'utilisation NF-1. pour obtenir cette valeur, préfixer signe dollar, par exemple $ (NF-1)
|
|
||||
|
Comme la barre est le dernier caractère de la ligne, il est compensé par "|$". De là, il est facile de construire la suite de regexp:
sed 's / .* \ ([NU] \) | $ / \ 1 /' i hope this helps Bakounine |
|
||||
|
Vous avez raison, bien sûr. Je ne l'aurais pas limité si le fil-démarreur n'aurait pas déclaré explicitement que la nature ne peut être que "N" ou "U".
Il est peut-être une question de philosophie de programmation (ce qui n'est pas le sujet de ce fil - du moins pas directement), je préfère ma solution la plus générale, suivie d'une ligne de capture de toutes les lignes ne correspondent pas à ma solution de le signaler comme suspects - les lignes qui "ne devrait pas exister" à tous. Le fait est: si un cahier des charges précise que le caractère spécifique ne peut être que "N" ou "U", alors je souhaite être informé si une ligne ni avec "N" ou "U" sur ce qui est en place. Peut-être le cahier des charges a changé, peut-être que mon script est défectueuse, peut-être certaines des mesures de pré-traitement produisant les lignes sont défectueux - que ce soit. Au moins il ya quelque chose de * * qui ont pu être traitées. Avec tout le respect Bakounine |
![]() |
| Bookmarks |
| Thread Tools | Recherche sur ce Thread |
| Modes d'affichage | Rate this thread |
|
|