次のようなCSVの行があるとします。
|Foo|,,,,,,,,|Bar|,,,,,
|
カプセル化機能はどこにあり、,
区切り文字はどこにありますか(ご想像のとおり)。
ただし、これらの空のフィールドに入力する必要のあるコードがあり、代わりにこの行を次のようなものに変換するとします。
|Foo|,||,||,||,||,||,||,||,|Bar|,||,||,||,||,
(末尾のコンマは後で処理できます)このCSVでこのsedコマンドを使用して、目的の結果を取得しようとしました。
sed 's/,,/,||,/g'
ただし、正規表現パターン,,
は幅がゼロではないため、1つのフィールドしか処理していなくても、ライン上をスキャンすると2つ移動します。結果は次のようになります。
|Foo|,||,,||,,||,,||,|Bar|,||,,||,,
問題は、これまでのところ置換を行うと、次のようになることです。
|Foo|,||,,,,,,,|Bar|,,,,,
の周りのコンマはすでに「処理」されており、最後のコンマを含まない、登録した最後のコンマ||
の次のペアに移動します,||,
。
sedを使用してこの置換を行うにはどうすればよいですか?