式が単一引用符で囲まれている場合に、sedで単一引用符を照合する方法:
sed -e '...'
たとえば、次のテキストと一致させる必要があります。
'foo'
次のいずれかを使用できます。
"texta'textb" (APOSTROPHE inside QUOTATION MARKs)
または
'texta'\''textb' (APOSTROPHE text APOSTROPHE, then REVERSE SOLIDUS, APOSTROPHE, then APOSTROPHE more text APOSTROPHE)
Unicode文字の名前を使用しました。 REVERSE SOLIDUSは、より一般的にはバックスラッシュとして知られています。
後者の場合、アポストロフィを閉じてから、バックスラッシュでアポストロフィをシェル引用し、残りのテキスト用に別のアポストロフィを開きます。
質問へのコメントで述べたように、それは本当にsedについてではなく、シェルの引用符付き文字列に引用符を含める方法(たとえば、bash)です。
以前の回答を明確にするために、引用符をバックスラッシュでエスケープする必要がありますが、単一引用符で囲まれた式の中でそれを行うことはできません。 bashのmanページから:
文字を単一引用符で囲むと、引用符内の各文字のリテラル値が保持されます。バックスラッシュが前に付いていても、一重引用符は一重引用符の間に出現しない場合があります。
したがって、引用符で囲まれた式を終了し、エスケープされた引用符を挿入して、新しい引用符で囲まれた式を開始する必要があります。シェルの引用の削除では余分なスペースが追加されないため、実際には文字列が連結されます。
したがって、式「foo」を単一引用符で囲む方法の元の質問に答えるには、次のようにします。
sed -e '...'\''foo'\''...'
(「...」はsed式の残りの部分です)。
全体として、読みやすくするために、可能な場合は、周囲の引用符を二重引用符に変更する方がはるかに良いでしょう。
sed -e "...'foo'..."
[最初の(単一引用符)アプローチの潜在的なメンテナンスの悪夢の例として、StackOverflowの構文が強調表示されている引用符、バックスラッシュ、およびその他のテキストの色に注意してください-それは間違いなく正しくありません。]