sedを使用して開始文字と終了文字の間にある文字を取得しようとしています。これらの開閉文字は中括弧であってもよい。 {と}などです。私の具体的なケースでは、開始文字は=
で、終了文字はラインの終わりです。Sedを使用して開始文字と終了文字の間のすべての文字を取得する
PHPでは、私は通常私のために働いた正規表現を持っていました:([^\^]*?)
。しかし、sedがPOSIX-BREフレーバーを使用しているので、これはうまくいくとは思わない。
正規表現を使用している文字列は、password=mailPASSWORD
のようになります。 mailPASSWORDには、通常のアルファベット文字と特殊文字を含めることができます。
私はmailPASSWORDを置き換えて自分のパスワードを入れたいと思います。
私は助けていただきありがとうございます。事前
EDIT
で
おかげsedのために、他の選択肢を見た後、私はperlが実際にこの種のもののためにはるかに優れたツールであることが分かりました。そして、私の正規表現の知識はかなりのperlベースであるため、より良い方法に見えます。ここで
は、私は同じ問題を解決する方法は次のとおりです。
perl -p -i -e "s/password *= *[^\n]*/password=mypassword/" /myfile
私はラインでスタッフラインをやっているので、それだけでスクリプトに非常に簡単なものを作ります。あなたの特定のケースについては
終了区切り記号は新しい行またはスペースまたはタブです。 PHPでは、この 'password [] * = [] *([^ \ ^] *?)[\ n \ t] *'のようなことをします。私がPOSIX-BREのやり方で同じことを達成する方法がわからないのですか? –
@ChuckUgwuhあなたの質問は、 "閉じた文字は行の終わりです"と言います。終了区切り文字であるタブやスペースについて何も言及していませんでした。私の答えへの更新を見てください。 sedは行ベースなので '\ n'を除外する必要はないので、改行は効果的に除外されます。 –
@LaurenceGonzalvesありがとうございました。これは私のために働く。 –