The UNIX and Linux Forums  
Ciao e benvenuto da parte degli Stati Uniti al UNIX e Linux Forum! Grazie per la visita ed unirsi alla nostra Comunità Globale.

Go Back   UNIX e Linux Forum > Inizio Forum > Shell scripting e di programmazione
.
google unix.com



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

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 Cerca in questo Thread Rate Thread Modalità di visualizzazione
  #1 (permalink)  
Old 02-14-2008
hidnana hidnana is offline
Utente Registrato
  
 

Iscriviti Data: febbraio 2008
Interventi: 14
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..
  #2 (permalink)  
Old 02-14-2008
ghostdog74 ghostdog74 is offline Forum Advisor  
Utente Registrato
  
 

Join Date: Sep 2006
Interventi: 2.516
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)
  #3 (permalink)  
Old 02-14-2008
Bakunin bakunin is offline Forum Staff  
Bughunter Extraordinaire
  
 

Iscriviti Data: maggio 2005
Situazione: Nel byte sinistra di / dev / kmem
Messaggi: 1.628
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
  #4 (permalink)  
Old 02-14-2008
fpmurphy's Avatar
fpmurphy fpmurphy is offline Forum Staff  
Moderatore
  
 

Iscriviti Data: dicembre 2003
Luogo: Florida
Messaggi: 1.916
Una soluzione più generale utilizzando sed è

Codice:
sed 's/.*\(.\)|$/\1/' file
  #5 (permalink)  
Old 02-14-2008
Bakunin bakunin is offline Forum Staff  
Bughunter Extraordinaire
  
 

Iscriviti Data: maggio 2005
Situazione: Nel byte sinistra di / dev / kmem
Messaggi: 1.628
Citazione:
Originalmente inviato da fpmurphy View Post
Una soluzione più generale utilizzando sed è
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
  #6 (permalink)  
Old 02-14-2008
hidnana hidnana is offline
Utente Registrato
  
 

Iscriviti Data: febbraio 2008
Interventi: 14
Grazie per i vostri preziosi suggerimenti.
Closed Thread

Segnalibri

Thread Tools Cerca in questo Thread
Cerca in questo Thread:

Ricerca Avanzata
Modalità di visualizzazione Vota questo thread
Vota questo thread:

Distacco regolamento
Tu non può post nuovo thread
Tu non può inviare una risposta
Tu non può postare allegati
Tu non può modificare i tuoi post

BB codice è Su
Smilies sono Su
[IMG] codice Su
Codice HTML è Chiuso
Trackbacks sono Su
Pingbacks sono Su
Refbacks sono Su




Tutti gli orari sono GMT -4. La data di oggi è 04:52 AM.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Traduzioni Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
UNIX e Linux Forum Content Copyright © 1993-2009. Tutti i diritti Reserved.Ad di gestione da RedTyger

Contenuti pertinenti URL da vBSEO 3.2.0