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ファイルで使用されているスキーマに関するドキュメントが見つからなかったため、ここでの解析は完全に一時的です。