次の書式設定行を含む大規模なファイルセットがあります。開いている中かっこと閉じている中かっこを含むスペースにのみ|
文字を置き換える必要があります。{"USER":"AD","DESCRIPTION":"\"<some non english characters> |\n<some non english characters>","LINK":"sample"}
したがって、次のテキストの場合
|||||samA|sam2||||{"USER":"AD","DESCRIPTION":"\"<some non english characters> |\n<some non english characters>","LINK":"sample"}||||data|string|
出力は次のとおりです
|||||samA|sam2||||{"USER":"AD","DESCRIPTION":"\"<some non english characters> \n<some non english characters>","LINK":"sample"}||||data|string|
私はこれを行うために数時間、さまざまなsed形式を試しましたが、まだ成功していません。私ができる方法はありますか?
ベストアンサー1
全体的に:
sed '/{[^}]*|/{:a;s/\({[^}]*\)|\([^}]*}\)/\1 \2/;ta}'
簡単な説明:
/{[^}]*|/
--変更を適用するパターンを含む行のみをフィルタリングします。 (実際にはこの部分は削除できますが、大容量ファイルの処理速度が速くなる可能性があります。)
:a;...;ta
- 代替文が何も変更しないまで行を繰り返すループ。|
中括弧が複数ある場合は、次のものが必要です。
s/\({[^}]*\)|\([^}]*}\)/\1 \2/;
|
内部中括弧を交換してください。一度に1。