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

Otrzymuję ten błąd po uruchomieniu powyższego polecenia w terminalu.sed: 1: "...": Niepoprawny kod polecenia f

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

Przyjrzałem się kilku forom i nie znalazłem nic o kodzie f. Każda pomoc/wgląd byłby mile widziany

+1

Proszę pokazać dokładnie sed polecenia używasz (zamiast 'toreplace' i' replacewith'). Dziwne zgadywanie: czy istnieje "/" w jednym z terminów? – Wintermute

+0

Tak. Zakładając, że wynik 'grep' jest poprawny powinieneś zdecydowanie sprawdzić'/'w argumentach' sed'. W takim przypadku spróbuj użyć składni '' s_toreplace_replacewith_g''. – TomCho

+0

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

Odpowiedz

14

Wyobraziłem sobie, co było nie tak. Musiałem dodać '' po -i i przed 's/../../':

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

Wiedziałem, że lunch to naprawi! – Tdorno

+4

Prawdopodobnie działasz na komputerze Mac lub systemie BSD. Komenda 'sed' BSD przyjmuje opcję' -i', ale wymaga przyrostka dla kopii zapasowej (ale dozwolony jest pusty sufiks). Zapewnienie podstawowych informacji na temat platformy często pomaga. –