正規表現一致テキストのすぐ内側に置換を適用したいログがあります。
例として、次のログ行を取り上げます。
date machine text random text and yet more random text - status code
ログ内の他のすべてのスペースを置き換えずに、テキスト領域内のすべてのスペースを _ に置き換えたい。出力は次のようになります。
date machine text_random_text_and_yet_more_random_text - status code
置き換えたい領域に一致させるには、次の正規表現を使用します。
/machine \(.*\) - /
テキストは標準的ではないため、1 つのスペースから 20 までのスペースを使用できるため、直接一致させるのは難しいため、部分文字列の開始と終了を一致させます。
それを使用しようとして、私はこれを試しました:
sed `/machine \(.*\) - / s/ /_/g ' logfile
もちろん、一致した部分文字列だけでなく、ログ内のすべてのスペースが置き換えられます。
が見つかるまで各フィールドを繰り返して印刷することにより、awkでなんとかそれを行うことがmachine
できOFS="_"
ました-
. それは機能します...それでも、sedを使用してこれを解決できるかどうか興味がありました。
ありがとう