![]() |
Ciao e benvenuto da parte degli Stati Uniti al UNIX e Linux Forum! Grazie per la visita ed unirsi alla nostra Comunità Globale.
|
|
google unix.com
|
|||||||
| Forum | Registrati | Regole Forum | Collegamenti | Album | FAQ | Members List | Calendario | Ricerca | Today's Posts | Mark Forums Read |
| Shell scripting e di programmazione Pubblica domande su KSH, CSH, SH, Bash, Perl, PHP, sed, awk e da altri script di shell e linguaggi di scripting shell qui. |
Più di UNIX e Linux Forum Argomenti potreste trovare utili
|
||||
| Filo | Thread Starter | Forum | Risposte | Ultimo Post |
| Come sostituire ogni carattere con newline char. | mightysam | Shell scripting e di programmazione | 5 | 09-18-2008 08:15 PM |
| estrazione, ma uno degli ultimi caratteri in una riga | hidnana | Shell scripting e di programmazione | 1 | 02-14-2008 08:48 AM |
| AWK estrazione | harris2107 | Shell scripting e di programmazione | 2 | 01-15-2008 11:44 AM |
| AWK estrazione | harris2107 | Shell scripting e di programmazione | 3 | 08-17-2007 05:02 AM |
| Aiuto con l'estrazione di catrame! | manthasirisha | Shell scripting e di programmazione | 4 | 03-17-2006 07:17 AM |
![]() |
|
|
LinkBack | Thread Tools | Cerca in questo Thread | Rate Thread | Modalità di visualizzazione |
|
|
|
||||
|
estrazione del penultimo char
Ho bisogno di estrarre il carattere che precede l'ultimo "|" nelle righe seguenti, che sono 'N' e 'U'. L'ultimo "|" non deve essere estratto. Anche il no.s di "|" può variare in una linea, ma mi serve solo la prima di carattere l'ultimo.
TT-PAC-N241485-0005241485 | AMMINISTRATORE | INC_ORGANISATION_NAME | SUPERIOR_TITLE_1 | REV | FIRST_NAME_1 | MIDDLE_NAME_1 | SURNA ME_FIELD | INC indirizzo 1 | INC indirizzo 2 | INC indirizzo 3 | INC indirizzo 4 | INC indirizzo 5 | INC indirizzo 6 | IN123EC | MALTA | Y | | M | | Y | LIFEASSURED 2 | Y | N |||||||||||||||||||||||| Y | | Y ||||||| ||||| PRU | A | | 289832 | | | FCBGFBF | Y | Y | 1 | CC | 1 | 1 | 3 | Y | O | | 20300601 | | | CAP | 5649369 | VVUMU7SMT0 | HCBCBFDJF | N | Y | N | Y | Y | N | Y | Y | 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-PAC-5241492-0005241492 | ADMINISTRATOR1 | INC_ORGANISATION_NAME | SUPERIOR_TITLE_1 | SM | FIRST_NAME_1 | MIDDLE_NAME_1 | SURNA ME_FIELD | INC indirizzo 1 | INC indirizzo 2 | INC indirizzo 3 | INC indirizzo 4 | INC indirizzo 5 | INC indirizzo 6 | IN123EC | | N | | M | | N | LIFE GARANTITO 1 | Y | N |||||||||||||||||||||||| Y | | Y ||||||| ||||| PRU | BFF | | 200006 | | | EB | Y | Y | 3 | CC | 2 | 1 | 3 | Y | O | | 20301207 | | | CAP | 5649376 | ZLBFQDGVGIOIJDHKNDK | M | N | Y | Y | N | Y | N | N | Y | N | 4 | | 7 | C | 20051205 | 555555555 ||||| 20070604 | 2 | 1600770 | | B | 281215 | 66 | 124002 | 923545 | | 20060405 | 1 | C | 1446100 | 92811 | 64148521 | 5 | | 20071205 | 1 | U | Io non sono in grado di raggiungere da taglio comando. Come si può fare? Ultimo a cura di hidnana; al 02/14/2008 06:06 AM.. |
|
||||
|
si può usare awk, impostare il separatore di campo FS a "|", quindi utilizzare il NF inbuilt variabile per ottenere l'ultimo campo. per l'ultimo secondo campo, l'uso NF-1. per ottenere tale valore, anteponi il segno del dollaro, ad esempio $ (NF-1)
|
|
||||
|
Poiché il tubo è l'ultimo simbolo char in linea è accompagnato da "|$". Da lì è facile costruire le seguenti regexp:
sed 's / .* \ ([NU] \) | $ / \ 1 /' Spero che questo aiuta Bakunin |
|
||||
|
Lei ha ragione, naturalmente. Io non sono limitati, se il thread-starter non avrebbe esplicitamente affermato che il carattere non poteva che essere "N" o "U".
Forse è una questione di filosofia di programmazione (che non è l'argomento di questo thread - o almeno non direttamente), io preferisco la mia soluzione il generale seguita da una linea che cattura tutte le linee, non ha trovato la mia soluzione al loro punto di come sospette - linee che "non dovrebbero esistere" a tutti. Il punto è: se uno dice che specifica il carattere specifico non può che essere "N" o "U", quindi mi piacerebbe essere informato, se non una linea con "N" o "U" su di essa si presenta. Forse la specificazione è cambiato, forse il mio script è difettoso, magari un po 'di pre-elaborazione passi produrre le linee sono difettosi - qualunque. Almeno c'è qualcosa di * * che avrebbe potuto essere affrontate. Con tutto il rispetto Bakunin |
![]() |
| Segnalibri |
| Thread Tools | Cerca in questo Thread |
| Modalità di visualizzazione | Vota questo thread |
|
|