既知の2つの文字列間の文字の削除

既知の2つの文字列間の文字の削除

次のデータセットがあります。

\"XXX \ START sapiodj \\" aj \d 2387 END hddo\" START bbcc  \\" END ss

\私の要件:STARTとENDの間にあるすべてのバックスラッシュと二重引用符を削除したいです。"

希望の出力:

\"XXX \ START sapiodj  aj d 2387 END hddo\" START bbcc   END ss

メモ:

  1. 同じ行に複数のSTART/END
  2. 他の場所では削除せずにSTARTとENDの間だけを\削除したいと思います。"
  3. 私のファイルには複数の行があります(上記のものと似ています)。
  4. sedただ使用する必要があります。

次の方法を試しましたが("最初に個別に削除しようとしました)、目的の結果が得られませんでした。

sed '/START/,/END/ s/"//g'

ベストアンサー1

`ファイルに文字がないとします。下のすべての行を別の文字に変更すると、`その文字は入力に表示されません。

sed -e 's/END/`/g;:X' -e 's/\(START[^`]*\)["\]/\1/g;tX' -e 's/`/END/g'

おすすめ記事