Sublime Text 3
세션 파일을 구문 분석하려고 합니다 .세션.sublime_session. JSON 형식과 유사한 내용으로 구성되어 있습니다.
사용:
cat Session.sublime_session | grep -A13 "\"file\":"
다음과 같이 목록(각 파일에 대해 반복)을 쉽게 얻을 수 있습니다.
"file": "/F/myHW/check_usb_switch.sh",
"semi_transient": false,
"settings":
{
"buffer_size": 873,
"regions":
{
},
"selection":
[
[
872,
872
]
--
다음과 같은 목록을 어떻게 얻을 수 있습니까?
/F/myHW/check_usb_switch.sh:872
...
(다른 또는 더 적합한 도구가 있습니까? (예:jq
등? )
요청된 정보:
# Start of file:
{
"folder_history":
[
],
"last_version": 3176,
"last_window_id": 9,
"log_indexing": false,
"settings":
{
"new_window_height": 912.0,
"new_window_settings":
{
"auto_complete":
{
"selected_items":
[
[
"input",
"input_stream"
],
...
},
"windows":
[
{
"auto_complete":
{
"selected_items":
[
[
"file",
"fileName"
...
[
"json",
"json_response"
]
]
},
"buffers":
[
{
"file": "/F/xxxx.sh",
"settings":
{
"buffer_size": 7040,
"encoding": "UTF-8",
"line_ending": "Unix"
}
},
{
"file": "/C/xxxx.txt",
요청 2:
{
"buffer": 1,
"file": "/C/Users/xxxx/Desktop/tmp/xxxx.txt",
"semi_transient": false,
"settings":
{
"buffer_size": 6529,
"regions":
{
},
"selection":
[
[
3569,
3569
]
],
"settings":
{
"syntax": "Packages/Text/Plain text.tmLanguage",
"word_wrap": false
},
"translation.x": 0.0,
"translation.y": 0.0,
"zoom_level": 1.0
},
"stack_index": 46,
"type": "text"
},
답변1
jq -r '.windows[]|.buffers[]|.file' Session.sublime_session
이는 JSON 파서를 사용하여 Sublime Text 3 세션 파일에 기록된 각 창의 각 버퍼에서 jq
모든 노드를 구문 분석합니다 .file
file
해당 비트에 대한 정보와 첫 번째 정수를 얻으려면 selection
데이터의 다른 곳을 찾아야 합니다.
jq -r '.windows[]|.groups[].sheets[]| "\(.file):\(.settings.selection[0][0])"' Session.sublime_session
이 필드 는 file
첫 번째 명령과 비교하여 문서의 완전히 다른 위치에서 가져옵니다.
제가 사용하고 있는 작은 예제 파일에서는 다음과 같은 결과가 생성될 수 있습니다.
/Users/kk/hello:18
출력으로.
(macOS의 세션 파일에서 테스트되었으며 hello
홈 디렉터리에 있는 파일을 호출했습니다.)
불행하게도 이러한 JSON 파일에 사용된 스키마에 대한 문서를 찾지 못했기 때문에 여기에서의 구문 분석은 전적으로 임시적입니다.