以下の文字列のファイルがあります:
||||||
||
すべての出現をwithに置き換えたい|""|
ので、使用しました
sed 's/||/|\"\"|/g' temp2.csv
しかし、私は次のように出力を得ました:
|""||""||""|
それ以外の|""|""|""|""|""|
sed が再帰的に置換を行っていないことがわかりました。前の行に||
ご協力いただきありがとうございます。
最も簡単な方法は、sed 置換を 2 回呼び出すことです。|||..{n}..|
しかし、この sed ワンライナーの方が良いかもしれないと思います。|""|""|...{n}..|""|
sed ':a s/||/|""|/g; t a' file
あなたのデータでテストしてください:
kent$ cat f
||||||
kent$ sed ':a s/||/|""|/g; t a' f
|""|""|""|""|""|
sed は先読みまたは後読みをサポートしていませんが、あなたの場合、2回目のパスを行うことができます:
<temp2.csv sed 's/||/|\"\"|/g' | sed 's/||/|\"\"|/g'