Arama çalıştırmaya ve değiştirmeye çalışırken "sed: -e ifade # 1" i alma


0

Amazon Linux kullanıyorum. Bir arama yapmaya ve sed kullanarak değiştirmeye çalışıyorum. Aşağıdaki hatayla karşılaşıyorum ...

[jboss@mydevbox nodejs]$ sed -i -e "s/test.smokeTest('(.*?)', '(.*?)', '(.*?)')/test.smokeTest('username', 'password', 'http://localhost:8081/myproject')/g" test.js 
sed: -e expression #1, char 96: unknown option to `s'

Yukarıdaki sorunu düzeltmek için ne yapmam gerektiğinden emin değilim, yalnızca tek tırnak ve çift tırnak kullanmamla ilgili bir şeyler olduğunu söyleyebilirim.

Düzenleme: Bu kullandığım örnek dosya

//Creates the new browser and Logins in
console.log('Validation Complete');
var test = require('./js/Optimus.js');

test.smokeTest('####', '####', 'http://mydomain.com/myproject/');

1
Bu HTTP eğik çizgi içinde geri s///
sarma

Neyin '(.*?)'eşleşmesi gerekiyor? '####'? Asla eşleşmeyecek.
don_crissti

Yanıtlar:


1

Her şeyden önce:

  • En son kullandığınız çift alıntı onu değiştirir ".

Sonra:
Asıl sorun sed seçeneği /için kullanıyor olmanız, sancak dizgenizde de (alıntılanmamış) /. En basit çözüm, sınırlayıcı #için şu şekilde değişmektir s:

sed -i -e "s#test.smokeTest('(.*?)', '(.*?)', '(.*?)')#test.smokeTest(‘username’, ‘password’, 'http://localhost:8081/myproject')#g” test.js

Ayrıca bunu çözmeniz gerektiğine de inanıyorum:

  • Kullanıyorsunuz ve çevresinde usernameve password. Onları değiştir '.

Yeni dosya için düzenleyin.

Sorunuza az önce eklediğiniz dosya için parantezden çıkmanız ve şunu kaldırmanız gerekir ?:

sed -i -e "s#test.smokeTest('\(.*\)', '\(.*\)', '\(.*\)')#test.smokeTest('username', 'password', 'http://localhost:8081/myproject')#g" test.js
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.