私はbashスクリプトを使ってphp.iniファイルの設定を変更しようとしました。
私の状況は次のとおりです。
非常に具体的な設定があり、デフォルトは次のとおりです。
;date.timezone =
今私はそれを次に変えようとしていますsed
。
date.timezone = "America/Mexico_City"
私が使用したいコマンドは次のとおりです。
sed -i '/^;date\.timezone[[:space:]]=.*$/date.timezone = "America/Mexico_City"' php.ini
しかし、私はそれを理解します:
sed: -e expression #1, char 35: extra characters after command
理由はわかりませんが、1つの文字だけを残しておくと機能します(予想通りではありませんが、エラーを返しません)。例:
sed -i '/^;date\.timezone[[:space:]]=.*$/d' php.ini
これは単に行を削除します;date.timezone =
私はsedに初めて触れたので、助けてくれて本当にありがとう。
ありがとう
答え1
あなたは努力していますSs
あるパターンを別のパターンに置き換えるには、次の形式のsedコマンドを使用する必要があります。
's/pattern/replacement/'
また、パターンをエスケープする/
か、文字列のすべての文字を置き換える必要があります(あなたの場合"America\/Mexico_City"
)。だから
sed 's/^;date\.timezone[[:space:]]=.*$/date.timezone = "America\/Mexico_City"/'
または、区切り文字を別のパターンに置き換えてスラッシュをエスケープするのを防ぎますs#pattern#replacement#
。
sed 's#^;date\.timezone[[:space:]]=.*$#date.timezone = "America/Mexico_City"#'