2012-03-09 17 views
1

私はOS X上にあり、特殊文字を含む既知のテキストを含むファイルのテキストを編集するためのbashスクリプトを作成しています。保持する必要のある変数と、入力または置換されたテキストがあります。 は、ここで入力されたファイルの内容である:すべてのヘルプは感謝sed変数と特殊文字を含むテキストの編集

existingTrusts=`more ~/prefs.js | grep "network.automatic-ntlm-auth.trusted-uris" | awk '{print $2}' | sed 's/);//g' | sed 's/"//g'` 
trustSites="company.com,organisation.co.uk,$existingTrusts" 
replacementValue='"user_pref("network.automatic-ntlm-auth.trusted-uris", "$trustSites");"' 
sed -i 's/^user_pref("network.automatic-ntlm-auth.trusted-uris/$replacementValue/' ~/prefs.js > ~/newPrefs.js 

user_pref("intl.charsetmenu.browser.cache", "UTF-8"); 
user_pref("network.automatic-ntlm-auth.trusted-uris", "search.co.za"); 
user_pref("network.cookie.prefsMigrated", true); 

私は現在、このコードを持っています。

+1

もっと無駄な使用。 (google "uuoc")。 "more file | grep ..."の代わりに、 "grep ... file"または "

+1

これを書く方法を尋ねない限り、ここで何が尋ねられているのかわかりません別の方法?... – Amadan

+0

なぜ 'sed -i'と'> newPrefs.js'を使うのですか?場所の編集をしたいのですか? – Sorpigal

答えて

1

existingTrusts変数を設定するには、あまりにも多くのパイプを使用しています。変数を次のように設定します。

existingTrusts=$(awk '/network.automatic-ntlm-auth.trusted-uris/ {gsub(/"|\);/, "", $2); print $2}' ~/prefs.js) 
trustSites="company.com,organisation.co.uk,$existingTrusts" 
replacementValue='user_pref("network.automatic-ntlm-auth.trusted-uris", "'$trustSites'");' 

# and now finally your sed command 
sed 's/^user_pref("network.automatic-ntlm-auth.trusted-uris".*$/'"$replacementValue"'/' ~/prefs.js > ~/newPrefs.js 
+0

ありがとうございます@anubhavaあなたは頭の上の釘を完全に打って、あなたがやったことが私に意味をなさない。あなたは長い疲れた週の終わりに私を救った! – chop

+0

あなたは大歓迎です、私はそれがあなたのためにうまくいってうれしいです。 – anubhava

1

なぜ複雑ですか?

trustedSites='company.com,organisation.co.uk,' 
sed -i '' -e '/network.automatic-ntlm-auth.trusted-uris/s/, "\([^"]*\)/, "'"${trustedSites}"'\1/' prefs.js 

それは文字通り.パターンでエスケープされていない.を使用しています

  • ので、これは不完全であるが
  • と推定されるそれはそれは場所を正確に

を予想通り, "が正確に表示されます前提これらのことは修正することができます。

関連する問題