BASHのエスケープ文字についての知識があります。\
次の文字がエスケープされ、およびを除くすべての文字がエスケープされ" "
、最後に除外されたすべての文字がエスケープされることがわかります。したがって、一重引用符 'を含むテキストがある場合は、その周囲に ""を入れて、単一のテキスト文字列のように動作させることができます。私が経験している問題は、私のファイルに二重引用符と一重引用符文字の両方が含まれているときです。そうすれば、どのような引用符でも外れません。それでは、bashを単一の文字列として扱うにはどうすればよいですか?$
"
' '
'
コンテキスト:私のiPhoneの/var/mobile/Library/Safari/History.plistファイル。これには次の内容が含まれています。
<key>
<string>http://example.com/folder/index.html</string>
<string>Title of Webpage which may include ' and "</string>
</key>
テキストを含む最初の行をcat
ファイルに渡し、ここからURLを抽出したいと思います。しかし、すべての引用は息が詰まるほどです。grep
string
grep
編集1:以下は、nanoがファイルを読み取れないスクリーンショットです。 Catは同様の出力を提供します。グラフィックファイルエディタiFileはそれをテキストとして読み込みます。 http://cloudrac3r.ddns.net/strange.html 私はこれがバイナリの目的だと聞きました。いくつかの実験をしましょう。
答え1
コマンドに文字通り文字列を入力すると、必要に応じて文字をエスケープできます。
grep 'Title of Webpage which may include '\'' and "' /var/mobile/Library/Safari/History.plist
grep "Title of Webpage which may include ' and \"" /var/mobile/Library/Safari/History.plist
また、これはcat
必須ではありません。
また、XMLを処理するには、XML対応ツールを使用するのが最善です。
xmllint -xpath \
'//key[string=concat("Title of Webpage which may include '\'' and ", '\''"'\'')]' \
/var/mobile/Library/Safari/History.plist
答え2
(修正を回答に変換)
plutil
plistは「バイナリファイル」なので、正しいテキストに変換するためにこのコマンドを使用します。完了すると、grep
ファイル管理に問題はありません。