文字列から等号の周りのスペースを削除する方法は?

文字列から等号の周りのスペースを削除する方法は?

文字列から等号の周囲の先行および末尾のスペースを削除する方法を決定しようとしています。空白がある場合とない場合があります。 0、1、またはそれ以上の等号がある場合があります。

私はこれを使用しようとしましたが、sed悲惨に失敗し、うまくいかないことを示す価値さえありません。作業に間違ったツールを使用しているようです。sedこの問題を解決するために正規表現を使用することはできないようですが、私が間違っている可能性があります。

等号の間のスペースを削除する方法は?


実際の問題は概念的に簡単です。ゼロ以上のオプションを含む文字列がありますa=b。オプションは、または同様のものとして提供a=bできa = bますa= b。で正規化する必要がありますa=b

など、複数行の文字列にコーナーケースが存在する可能性がありますCRLFスペースを壊すことが重要なポイントまで到達できませんでした。そうすれば、それを奇形と呼び、複数行の文字列を拒否したいと思います。

ベストアンサー1

don_crisstiもJulie Pelletierも完璧なコメントを答えに変えなかったので、Donは次の結論に達しました。

sed 's/[[:blank:]]*=[[:blank:]]*/=/g'

sed...目標を達成するために正規表現と文字クラスを使用します。内部的に[:blank:]空白またはタブをキャプチャし、外部で[]*ゼロ個以上の空白/タブキャプチャを表します。等号はそれ自体を表し、同じ正規表現を繰り返します。 (オプション)スペース、等号、および(オプション)スペースはすべて等号に置き換えられ、このgフラグはsedに行が表示されるたびに検索と置換を繰り返すように指示します。

入力例:

$ cat input
a=b a = b a= b a =b

そして出力:

$ sed 's/[[:blank:]]*=[[:blank:]]*/=/g' input
a=b a=b a=b a=b

おすすめ記事