2015-03-16 18 views
8
grep -l \'texttofind\' * | xargs sed -i 's/toreplace/replacewith/g' 

Im ottenere questo errore quando eseguo il comando sopra nel terminale.sed: 1: "...": codice di comando non valido f

sed: 1: "forkliftDailyChecklistW ...": invalid command code f 

Ho esaminato diversi forum e non ho trovato nulla sul codice f. Qualsiasi aiuto/intuizione sarebbe apprezzato

+1

prega di mostrare il comando esatto sed si sta utilizzando (invece di '' toreplace' e replacewith'). Immaginando selvaggiamente: c'è un '/' in uno dei termini? – Wintermute

+0

Sì. Supponendo che l'output di 'grep' sia corretto dovresti assolutamente controllare'/'negli argomenti di' sed'. Se questo è il caso, prova ad usare la sintassi ''s_toreplace_replacewith_g''. – TomCho

+0

Ecco il comando: grep -l \ '/ usr/local/www/apache22/data/htconfig/dbconfigure.php \' * | xargs sed -i '/ \/usr \/local \/www \/apache22 \/data /'''\.\$_ SERVER \ [' \ '' DOCUMENT_ROOT '\' \ \ \ \ \ '\' \ ' '/ g' –

risposta

14

Ho capito cosa c'era di sbagliato. Avevo bisogno di aggiungere '' dopo la -i e prima della 's/../../':

grep -l \'texttofind\' * | xargs sed -i '' 's/toreplace/replacewith/g' 
+1

Sapevo che il pranzo avrebbe risolto il problema! – Tdorno

+4

Probabilmente stai utilizzando un Mac o un sistema BSD. Il comando BSD 'sed' prende l'opzione' -i' ma richiede un suffisso per il backup (ma è consentito un suffisso vuoto). Fornire informazioni di base sulla piattaforma spesso aiuta. –

Problemi correlati