settings.py
次のようなテスト ファイルが与えられます。
# Django settings for x project.
DEBUG = True
TEMPLATE_DEBUG = DEBUG
ADMINS = (
# ('Your Name', 'your_email@example.com'),
)
MANAGERS = ADMINS
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.', # Add 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'.
'NAME': '', # Or path to database file if using sqlite3.
'USER': '', # Not used with sqlite3.
'PASSWORD': '', # Not used with sqlite3.
'HOST': '', # Set to empty string for localhost. Not used with sqlite3.
'PORT': '', # Set to empty string for default. Not used with sqlite3.
}
}
# Hosts/domain names that are valid for this site; required if DEBUG is False
# See https://docs.djangoproject.com/en/1.3/ref/settings/#allowed-hosts
ALLOWED_HOSTS = []
プログラム(シェルスクリプト)で行間の部分を置き換えたい:
DATABASES = {
と:
}
variable にテキストが含まれている場合k
:
declare -r k='foo bar baz'
私はperl
初心者ですが、これを作成しました:
perl -ne 'if(!$f && /DATABASES/){$f=1} if(!$f){print} if($f && /^}$/){$f=0}' < settings.py
sed
これは、私の通常の/awk
小さなハックからの逸脱です:
# e.g.
sed '/DATABASES/,/^}$/ d' < settings.py
perl
ワンライナーを改善したい!
sed
オールマイティでこんなにも美しいものをどうやって作ればいいのperl
?
絶対に最善の方法は次のとおりです。
- 標準入力が通り過ぎるのを見て、それを標準出力に再現する
- センチネルの「印刷停止」行を検出し、コピーを停止します
- 2 番目のセンチネル行に遭遇したときに stdin->stdout のパススルーを再度有効にします
タスクの置換部分も省略しましたが、それについても助けが得られることを望んでいます。