![]() |
|
|
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 |
| Per rimuovere il carattere di nuova riga | shihabvk | UNIX e avanzata per utenti esperti | 7 | 06-18-2009 08:44 AM |
| sed per eliminare il carattere [ ' | manishabh | Shell scripting e di programmazione | 2 | 08-30-2008 12:28 AM |
| Come rimuovere il carattere di estraneità | vsmurali | UNIX for Dummies Domande & Risposte | 7 | 03-18-2008 12:57 PM |
| Cercando di rimuovere il carattere unico di una linea | Iz3k34l | UNIX for Dummies Domande & Risposte | 5 | 07-07-2007 02:29 PM |
| Rimuovere l'ultimo carattere della linea | danhodges99 | Shell scripting e di programmazione | 4 | 05-21-2003 10:30 AM |
![]() |
|
|
LinkBack | Thread Tools | Cerca in questo Thread | Rate Thread | Modalità di visualizzazione |
|
|
|
||||
|
Necessità di rimuovere primo carattere di ogni terza linea (o rivista nawk).
Ecco i dati I'm a partire (ad esempio la produzione combinata di due query, dimensione del file: 284k) Codice:
3000877|555-55-1111|2|7/30/2008|TEST|P.O. BOX 1111|PALM DESERT|CA|92211||5555555555||||||||48|||1||1|3|||2|||||||||||||1|3||2|2 ||||2||9||3|1|2|2|2|1|3|0||5|2|||||||||88||3|2||3|2||||2|1|||6|5/31/2008|2||||9|AD|||42|42||||||Y|555-55-1111|SMITH|JOHN|||12 /23/1960|2|WH|||||||||Y 3000178|555-55-1112|2|7/23/2008|TEST|P.O. BOX 1112|TEMECULA|CA|92591||5555555555||||||||33|||1||1|3|||2|||||||||||||3|3||2| 2||||2||9||2|1|2|2|2|2|3|0||5|2|||||||||88|||2||3|2||||2|9|||||2||||9|A|||42|42||||||Y|555-55-1112|SMITH|JACK|||12/8/1975|2|BL| ||||||||Y 3000317|555-55-1113|2|7/29/2008|TEST|P.O. BOX 1113|MORENO VALLEY|CA|92556||5555555555||||||||55|||1||4|1|||2|||||||||||||1|3||2|2|||| 2||9||1|0|2|2|2|2|3|0||5|2|||||||||88|||2||3|2||||2|9|||||2||||9|A|||42|42||||||Y|555-55-1113|SMITH|JOE|||11/28/1953|2|AO||||||| ||Y Poi eseguire il seguente script nawk come \ n è necessaria dopo la # 103 e # 120 voci. (nawk-f scriptname> nomefile1) Codice:
[
BEGIN {
FS="|"
}
{
OFS="|"
}
{
print $1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13,$14,$15,$16,$17,$18,$19,$20,
$21,$22,$23,$24,$25,$26,$27,$28,$29,$30,$31,$32,$33,$34,$35,$36,$37,$38,$39,$40,
$41,$42,$43,$44,$45,$46,$47,$48,$49,$50,$51,$52,$53,$54,$55,$56,$57,$58,$59,$60,
$61,$62,$63,$64,$65,$66,$67,$68,$69,$70,$71,$72,$73,$74,$75,$76,$77,$78,$79,$80,
$81,$82,$83,$84,$85,$86,$87,$88,$89,$90,$91,$92,$93,$94,$95,$96,$97,$98,$99,
$100,$101,$102,$103,"\n",
$104,$105,$106,$107,$108,$109,$110,$111,$112,$113,$114,$115,$116,
$117,$118,$119,$120,"\n"
}
END {}
Il nawk script di uscita (cioè nomefile1) è il seguente: Codice:
3000877|555-55-1111|2|7/30/2008|TEST|P.O. BOX 1111|PALM DESERT|CA|92211||5555555555||||||||48|||1||1|3|||2|||||||||||||1|3||2|2 ||||2||9||3|1|2|2|2|1|3|0||5|2|||||||||88||3|2||3|2||||2|1|||6|5/31/2008|2||||9|AD|||42|42||||||Y| |555-55-1111|SMITH|JOHN|||12/23/1960|2|WH|||||||||Y| 3000178|555-55-1112|2|7/23/2008|TEST|P.O. BOX 1112|TEMECULA|CA|92591||5555555555||||||||33|||1||1|3|||2|||||||||||||3|3||2| 2||||2||9||2|1|2|2|2|2|3|0||5|2|||||||||88|||2||3|2||||2|9|||||2||||9|A|||42|42||||||Y| |555-55-1112|SMITH|JACK|||12/8/1975|2|BL|||||||||Y| 3000317|555-55-1113|2|7/29/2008|TEST|P.O. BOX 1112|MORENO VALLEY|CA|92556||555555555||||||||55|||1||4|1|||2|||||||||||||1|3||2|2|||| 2||9||1|0|2|2|2|2|3|0||5|2|||||||||88|||2||3|2||||2|9|||||2||||9|A|||42|42||||||Y| |555-55-1113|SMITH|JOE|||11/28/1953|2|AO|||||||||Y| Il problema è il terzo di ogni linea di ingresso, la nawk script ha inserito un ulteriore primo carattere pipe (cioè |) ed è causa di una grande quantità di caos dato il mio fabbisogno di importazioni. Adesso ho provato vari sed metodi di eliminazione sulla base del primo carattere di ogni 3a linea in tutto il file, purtroppo senza successo. Infine, ho rivisto il nawk script nel tentativo di escludere il carattere aggiuntivo tubo, il tutto senza successo. Codice:
|555-55-1113|SMITH|JOE|||11/28/1953|2|AO|||||||||Y| Ha bisogno di essere: Codice:
555-55-1113|SMITH|JOE|||11/28/1953|2|AO|||||||||Y| Review, pensieri e suggerimenti sono davvero accolto. Grazie! |
|
||||
|
Ecco il risultato: Codice:
3000877|555-55-1111|2|7/30/2008|TEST|P.O. BOX 1111|PALM DESERT|CA|92211||555555555||||||||48|||1||1|3|||2|||||||||||||1|3||2|2 ||||2||9||3|1|2|2|2|1|3|0||5|2|||||||||88||3|2||3|2||||2|1|||6|5/31/2008|2||||9|AD|||42|42||||||Y| ^H|555-55-1111|SMITH|JOHN|||12/23/1960|2|WH|||||||||Y| ^H |
|
||||
|
Citazione:
Codice:
BEGIN { FS = OFS = "|" }
{
print $1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13,$14,$15,
$16,$17,$18,$19,$20,$21,$22,$23,$24,$25,$26,$27,$28,
$29,$30,$31,$32,$33,$34,$35,$36,$37,$38,$39,$40,$41,
$42,$43,$44,$45,$46,$47,$48,$49,$50,$51,$52,$53,$54,
$55,$56,$57,$58,$59,$60,$61,$62,$63,$64,$65,$66,$67,
$68,$69,$70,$71,$72,$73,$74,$75,$76,$77,$78,$79,$80,
$81,$82,$83,$84,$85,$86,$87,$88,$89,$90,$91,$92,$93,
$94,$95,$96,$97,$98,$99,$100,$101,$102,$103
print $104,$105,$106,$107,$108,$109,$110,$111,$112,$113,
$114,$115,$116,$117,$118,$119,$120
print ""
}
Il primo stampa \u003d "" dichiarazione è stato rimosso in quanto è stata la creazione di un ulteriore / inutili riga (ossia di separazione). Grazie! |
|
||||
|
provare questo .... dimmi se questo funziona bene .....
awk '( if (NR% 3! \u003d 0) ( stampa ) altro ( for (i \u003d 1; i <\u003d NF; i + +) ( if (i \u003d\u003d 1) ( printf ( "% s", substr ($ 1,2, la lunghezza ($ 1) -1)) ) altro ( printf ( "% s", $ i) ) ) printf "\ n" ) ) 'File Ultimo a cura di vijay_0209; al 10/07/2008 01:09 AM.. |
![]() |
| Segnalibri |
| Thread Tools | Cerca in questo Thread |
| Modalità di visualizzazione | Vota questo thread |
|
|