Ho bisogno di sostituire l'intera linea con sed
se corrisponde a un modello. Ad esempio se la linea è 'uno due sei tre quattro' e se 'sei' c'è, allora l'intera linea deve essere sostituita con 'errore'.sed sostituire l'intera linea quando trovata trovata
risposta
Si può fare con uno di questi:
sed 's/.*six.*/fault/' file # check all lines
sed '/six/s/.*/fault/' file # matched lines -> then remove
Prende la linea completa che contiene six
e lo sostituisce con fault
.
Esempio:
$ cat file
six
asdf
one two six
one isix
boo
$ sed 's/.*six.*/fault/' file
fault
asdf
fault
fault
boo
Si basa su this solution per Replace whole line containing a string using Sed
Più in generale, è possibile usare un'espressione sed '/match/s/.*/replacement/' file
. Questo eseguirà l'espressione sed 's/match/replacement/'
in quelle linee contenenti match
. Nel tuo caso questo sarebbe:
sed '/six/s/.*/fault/' file
Che cosa succede se abbiamo 'uno due sei otto 1103 quattro' e vogliamo includere 'otto' e 'undici' come il nostro "cattivo" parole?
In questo caso possiamo usare il -e
per molteplici condizioni:
sed -e 's/.*six.*/fault/' -e 's/.*eight.*/fault/' file
e così via.
O anche:
sed '/eight/s/.*/XXXXX/; /eleven/s/.*/XXXX/' file
Questo potrebbe funzionare per voi (GNU SED):
sed -e '/six/{c\fault' -e ';d}' file
o:
sed '/six/{c\fault'$'\n'';d}' file
Sopra risposte ha funzionato bene per me, solo menzionare un alternate way
M ATCH singolo modello e sostituirlo con uno nuovo:
sed -i '/six/c fault' file
Partita modello multipla e sostituire con uno nuovo (comandi concatenare):
sed -i -e '/one/c fault' -e '/six/c fault' file
- 1. Come aggiungere una linea nella sed se non viene trovata
- 2. sed, sostituire prima linea
- 3. Utilizzo di sed per sostituire l'inizio della riga quando viene trovata una corrispondenza
- 4. ERRORE: linea magica `% matplotlib` non trovata
- 5. Come sostituire la linea intera con sed?
- 6. PHP "Eccezione non trovata"
- 7. classe php non trovata quando è inclusa
- 8. Classe "SoapClient" non trovata
- 9. Libreria QWebView non trovata
- 10. SDK Posizione non trovata
- 11. Libreria "libmaliinstr.so" non trovata
- 12. CodeIgniter: Classe 'CI_Controller' non trovata
- 13. Interfaccia trovata org.apache.hadoop.mapreduce.TaskAttemptContext
- 14. cakephp3 DateTime classe non trovata
- 15. Laravel 5 Funzione() non trovata
- 16. CakePHP classe non trovata
- 17. System.Security.Cryptography non trovata
- 18. non trovata per -lBolts
- 19. Groovy - classe non trovata
- 20. Nessuna mappatura trovata
- 21. Dichiarazione membro non trovata
- 22. Classe SpringJUnit4ClassRunner non trovata
- 23. Classe 'COM' non trovata
- 24. Classe 'GuzzleHttp \ Client' non trovata
- 25. multilinea sed sostituire
- 26. JasperReports: funzione CONCATENATE non trovata
- 27. Classe Non trovata in AppKernel.php
- 28. JSP, proprietà EL non trovata
- 29. Laravel 5 vista non trovata
- 30. "libmaliinstr.so" non trovata .... in eclissi
Avete considerato 'grep -V'? – xato