私のNokiaバックアップファイルを許可されたvcard形式に変換したいと思います。バイナリデータの間に有効なvcard文字列が表示されます。たとえば、
!@#JUNKCHARACTERS!@#!@BEGIN:VCARD
VERSION:2.1
N:Jimmy;;;;
TEL;VOICE:4445551212
END:VCARD!@#JUNKCHARACTERS!@#!@
私は検索と置換のために16進エディタを使用してきましたが、それでも退屈です。 grepまたは他のコマンドラインツールを使用して、および間BEGIN:VCARD
のすべての文字列を抽出できますかEND:VCARD
?
答え1
素直に言ってすみませんが、次のことはできません。
strings binary-file > binary-strings-output.txt
その後、文字列出力を後処理しますか?次の内容に従ってください。
awk '/BEGIN:VCARD/,$NF ~ /END:VCARD/' binary-strings-output.txt
答え2
BEGIN:VCARD
開始は次のとおりです。との間のテキストのみを印刷しますEND:VCARD
。これはEND:VCARD
、との間に常に改行文字があると仮定しますBEGIN:VCARD
。
sed -n -e 's/.*[^A-Z]BEGIN:VCARD/BEGIN:VCARD/' \
-e 's/END:VCARD[^A-Z].*/END:VCARD/' \
-e '/BEGIN:VCARD/,/END:VCARD/p'