![]() |
|
|
google unix.com
|
|||||||
| Forum | Registrati | Regole Forum | Collegamenti | Album | FAQ | Members List | Calendario | Ricerca | Today's Posts | Mark Forums Read |
| UNIX for Dummies Domande & Risposte Se non sei sicuro dove pubblicare un UNIX o Linux domanda, posta da qui. Tutti i neofiti di Linux e UNIX benvenuto! |
Più di UNIX e Linux Forum Argomenti potreste trovare utili
|
||||
| Filo | Thread Starter | Forum | Risposte | Ultimo Post |
| Rimozione di specifiche linee di | catgovind | Shell scripting e di programmazione | 3 | 04-30-2008 06:40 AM |
| Come leggere una sezione specifica e modificare in | kn.naresh | Shell scripting e di programmazione | 2 | 04-18-2008 01:30 AM |
| Stampa con linee specifiche awk NF | jehrome_rando | Shell scripting e di programmazione | 1 | 03-13-2007 04:23 AM |
| la visualizzazione di specifiche linee di | dakid | UNIX for Dummies Domande & Risposte | 3 | 05-25-2006 04:25 AM |
| Come si linee specifiche in un file? | hedgehog001 | UNIX for Dummies Domande & Risposte | 2 | 08-23-2005 01:04 AM |
![]() |
|
|
LinkBack | Thread Tools | Cerca in questo Thread | Rate Thread | Modalità di visualizzazione |
|
|
|
||||
|
Come usare sed modificare linee specifiche
Qualcuno potrebbe dirmi come posso usare sed di modificare le linee seguenti linee specifiche? il file è il seguente:
"TEST/SI1573.lab" H 3670 8920 # 8920 9530 hh 9530 10694 ih . "TEST/DR1/FAKS0/SI2203.lab" H 9730 9580 # 9580 9840 dh 9840 10652 ix 10652 11997 r ........ Voglio modificare il primo campo a 0 delle linee che segue le linee cominciato con "PROVA. Il file dopo l'operazione dovrebbe essere: "TEST/SI1573.lab" H 0 8920 # 8920 9530 hh 9530 10694 ih . "TEST/DR1/FAKS0/SI2203.lab" H 0 9580 # 9580 9840 dh 9840 10652 ix 10652 11997 r ........ nessuno potrebbe dire il mio modo di farlo? Grazie in anticipo. |
|
||||
|
Codice:
sed -e '/^"TEST/{p;N;s/.*\n[0-9]*/0/;}' filename
Ci sono molte diverse versioni di sed, Così il vostro potrebbe non capire esattamente lo stesso dialetto, come il mio. Questo aspetto di ' "test' (con una doppia apertura citazione) all'inizio della riga. Se trovata, stampe che linea (p), E aggiunge la riga successiva al pattern spazio (N). Questo fa sì che il modello di spazio per contenere due righe; TEST linea e la seguente riga, separati da una riga vuota. Poi si sostituisce (s// /), La prima riga del modello di spazio, il capo ", e ogni numero, subito dopo la nuova riga con uno zero. A quel punto, si sono fatti; ciò che è a sinistra nel modello spazio verrà stampato come al solito. sed sintassi è molto laconica; se non si dispone di uno specifico motivo di ricorso sed per questo, forse un equivalente awk o Perl sarebbe più script di manutenzione (soprattutto se non avete molta familiarità con sed). Ultimo a cura di epoca; al 05/18/2008 06:46 AM.. Motivo: Forse preferiscono awk o Perl, dopo tutto ...? |
|
||||
|
Codice:
awk '/^"TEST/ { t=1 ; print; next }
t==1 { $1 = "0"; t=0; }1' filename
Questo fa sì che la variabile t essere impostato a 1 per la seguente riga dopo la prova linea. Se questo è il caso, sostituire il primo campo con uno zero, e impostare t torna a zero. La finale 1 cause qualsiasi linea che raggiunge in questo punto lo script per essere stampato. (E 'un stenodattilografo; l'azione predefinita di awk è la stampa, se la condizione è vera, e 1, come una condizione è sempre vera.) |
|
||||
|
Uno dei miei favoriti personali sono Kernighan & Pike's L'ambiente di programmazione Unix ma è molto vecchio, così alcune delle periferiche dettagli sono cambiate molto da allora. Un altro è perenne Friedl's Mastering Regular Expressions, Anche se si potrebbe lottare con essa in prima se non hanno familiarità con gli strumenti che copre.
La O'Reilly sed & Awk libro è una buona introduzione alla sed e awk, anche se ci sono un sacco di tutorial on-line, che sono probabilmente solo come bene. La sezione FAQ ha più legami; Sono nuovo di Unix. Quali libri devo leggere? - Il Forum UNIX |
![]() |
| Segnalibri |
| Tag |
| regex, le espressioni regolari |
| Thread Tools | Cerca in questo Thread |
| Modalità di visualizzazione | Vota questo thread |
|
|