Go Back   UNIX e Linux Forum > Inizio Forum > Shell scripting e di programmazione
.
Google Site



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.

Closed Thread
English Japanese Spanish French German Portuguese Italian Powered by Powered by Google
 
Thread Tools Cerca in questo Thread Rate Thread Modalità di visualizzazione
  #1 (permalink)  
Old 04-17-2008
Jae Jae is offline
Utente Registrato
 

Join Date: Aug 2007
Interventi: 24
Sostituire una cifra da due cifre usando sed

Folks,

C'è un modo semplice per sostituire un cifra da due cifre utilizzando sed.

Esempio,
mydigit1918_2006_8_8_lag1.csv dovrebbe essere
mydigit1918_2006_08_08_lag01.csv.

Ho cercato in questo modo, ma non funziona.
echo mydigit1989_2006_8_8_lag1.csv |sed 's / [[: digit:]] / 0 [[: digit :]]/'

Grazie,
Sponsored Links
  #2 (permalink)  
Old 04-17-2008
epoca era is offline Forum Advisor  
Herder di Inutile Gatti (Su sabbatico)
 

Iscriviti Data: marzo 2008
Ubicazione: / ci / è / solo / bin / sh
Interventi: 3.652
Apparentemente la tua sed non capire il [[: digit:]] categoria, ma se lo facessero, che andrebbe a sostituire la prima cifra - il 1 nel 1989 - e lo sostituisce con una stringa "[[: digit :]]". È necessario fornire più contesto e, apparentemente, utilizzare il vecchio stile [0-9] per far costruire una cifra.


Codice:
echo mydigit1989_2006_8_8_lag1.csv | sed 's/_\([0-9]\)/_0\1/g'

L'espressione regolare corrisponde a una sola cifra dopo un carattere di sottolineatura, e la cattura in un backreference in modo che tu possa fare riferimento ad essa come "\ 1" nella parte di sostituzione. (Questo è ciò che il backslash parentesi sono. Vostri sed potrebbe desiderare senza backslash, o qualcosa del genere.) La /g alla fine dice di farlo per un numero di volte possibile ( "a livello mondiale"), non solo la prima occorrenza.
  #3 (permalink)  
Old 04-17-2008
Utente Registrato
 

Iscriviti Data: ottobre 2007
Posizione: Stati Uniti d'America
Interventi: 759

Codice:
echo mydigit1918_2006_8_8_lag1.csv | sed -e 's/\([^0-9]\)\([0-9]\)\([^0-9]\)/\10\2\3/' -e 's/\([^0-9]\)\([0-9]\)\([^0-9]\)/\10\2\3/g'

  #4 (permalink)  
Old 04-17-2008
Jae Jae is offline
Utente Registrato
 

Join Date: Aug 2007
Interventi: 24
Sguardi semplice, ma ..

Citazione:
Originalmente inviato da epoca View Post
Apparentemente la tua sed non capire il [[: digit:]] categoria, ma se lo facessero, che andrebbe a sostituire la prima cifra - il 1 nel 1989 - e lo sostituisce con una stringa "[[: digit :]]". È necessario fornire più contesto e, apparentemente, utilizzare il vecchio stile [0-9] per far costruire una cifra.


Codice:
echo mydigit1989_2006_8_8_lag1.csv | sed 's/_\([0-9]\)/_0\1/g'

L'espressione regolare corrisponde a una sola cifra dopo un carattere di sottolineatura, e la cattura in un backreference in modo che tu possa fare riferimento ad essa come "\ 1" nella parte di sostituzione. (Questo è ciò che il backslash parentesi sono. Vostri sed potrebbe desiderare senza backslash, o qualcosa del genere.) La /g alla fine dice di farlo per un numero di volte possibile ( "a livello mondiale"), non solo la prima occorrenza.
Grazie Era,

Guarda il suo approccio semplice, ma non del tutto giusto. Shamrock's metodo qui di seguito guarda a lungo, ma mi dà una risposta giusta.
  #5 (permalink)  
Old 04-18-2008
epoca era is offline Forum Advisor  
Herder di Inutile Gatti (Su sabbatico)
 

Iscriviti Data: marzo 2008
Ubicazione: / ci / è / solo / bin / sh
Interventi: 3.652
Ah sì, diventa anche per il 2006. E 'possibile stabilire che, con un diverso regex ma è già qualcosa che funziona per voi.
  #6 (permalink)  
Old 04-18-2008
Utente Registrato
 

Join Date: Sep 2006
Messaggi: 2.604
regexp può essere potente, ma può arrivare confusione per i deboli di cuore

Codice:
# echo "mydigit1918_2006_08_08_lag01.csv" | awk -F"_" '{$3+=0;$4+=0}1' OFS="_"
mydigit1918_2006_8_8_lag01.csv

Sponsored Links
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 Chiuso


Più di UNIX e Linux Forum Argomenti potreste trovare utili
Filo Thread Starter Forum Risposte Ultimo Post
Come convertire un 2 cifre a 4 cifre jisha Shell scripting e di programmazione 6 04-23-2008 07:38 AM
perché "expr" $ () REPLICA ": '\ ([1-9] [[: digit:]] * \)" può capire se si tratta di una cifra? sleepy_11 Shell scripting e di programmazione 6 08-08-2007 04:51 AM
Estrazione 10 cifre dal file txt c19h28O2 Shell scripting e di programmazione 9 08-07-2006 07:06 PM
conversione colonna 6 cifre date per il formato Gerry405 UNIX for Dummies Domande & Risposte 15 10-06-2005 07:42 AM
calcolare una cifra di controllo jim9418 UNIX for Dummies Domande & Risposte 1 02-16-2005 03:14 PM



Tutti gli orari sono GMT -4. La data di oggi è 04:15 PM.


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-2010. Tutti i diritti Reserved.Ad Management by RedTyger

Contenuti pertinenti URL da vBSEO 3.2.0