rokkonet

PC・Androidソフトウェア・アプリの開発・使い方に関するメモ

シェルスクリプト 文字列から直前に\(バックスラッシュ)が無い"(二重引用符)までを削除する

2018 Jul. 21.

Srch=$(echo $Line | grep -oP '^.*?\\".*?[^\\]"' | sed -e 's/\\/\\\\/g')
echo $Line | sed -e s/${Srch}//

「直前に\(バックスラッシュ)が無い"(二重引用符)まで」の検索
  原形 ^.*?\".*?[^\]"
  grepに使う時 '^.*?\\".*?[^\\]"'
  sedに使う時 '^.*?\\".*?[^\\]"'

sedの検索文字列内での\(バックスラッシュ)
  '(シングルクォーテーション)で囲むと
    シェルではそのまま読み込まれて
    sedにおいて\(バックスラッシュ)が状況に応じてエスケープ文字に解釈される

  '(シングルクォーテーション)で囲まないと
    シェルで読み込まれる時に\が状況に応じてエスケープ文字に解釈され
    sedにおいても\が状況に応じてエスケープ文字に解釈される
    \をたくさん書く必要がある