2

以下の文字列のファイルがあります:

||||||

||すべての出現をwithに置き換えたい|""|ので、使用しました

sed 's/||/|\"\"|/g' temp2.csv

しかし、私は次のように出力を得ました:

|""||""||""|それ以外の|""|""|""|""|""|

sed が再帰的に置換を行っていないことがわかりました。前の行に||

ご協力いただきありがとうございます。

4

3 に答える 3

5

最も簡単な方法は、sed 置換を 2 回呼び出すことです。|||..{n}..|しかし、この sed ワンライナーの方が良いかもしれないと思います。|""|""|...{n}..|""|

sed ':a s/||/|""|/g; t a' file

あなたのデータでテストしてください:

kent$  cat f
||||||

kent$  sed ':a s/||/|""|/g; t a' f
|""|""|""|""|""|
于 2013-10-18T15:20:37.103 に答える
2

sed は先読みまたは後読みをサポートしていませんが、あなたの場合、2回目のパスを行うことができます:

<temp2.csv sed 's/||/|\"\"|/g' | sed 's/||/|\"\"|/g'
于 2013-10-18T15:15:29.220 に答える