내 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'