(O+P)ut

アウトプット



(O+P)ut

エンジニアのアウトプット

【Box】boxnoteをtxt形式に変換するワンライナー

スポンサーリンク

はじめに

クラウドストレージであるBoxにはBox Notesというドキュメント作成ツールが内包されています。
特にリアルタイムで文字入力が画面に反映されるのでチーム間で利用に力を発揮します。

そんなBoxNotesですが、実態はJSONとマークダウンが混じったような形式なのでテキストエディタでそのまま開くと不要な記号列で画面が埋め尽くされます。

それを受けて、BoxNotesをファイルとして見た際の.boxnote形式をUNIX環境にて.txtに変換するワンライナーを作成しました。

コマンド実行環境
$ uname -a
CYGWIN_NT-10.0 ... x86_64 Cygwin

変換ワンライナー

該当の.boxnoteに対して以下ワンライナーを発行すればテキストとして読みやすくなります。

$ cat hoge.boxnote | awk '{print substr($0,index($0,"\"atext\":{\"text\":")+length("\"atext\":{\"text\":")+1)}' | awk '{print substr($0,0,index($0,"\",\"attrib")-1)}' | sed -e 's/\\n/\n/g' > hoge.txt

以下、ワンライナーの解説です。

解説

.boxnoteをfileコマンドで確認すればテキストであることが分かります。

$ file hoge.boxnote
hoge.boxnote: UTF-8 Unicode text, with very long lines, with no line terminators

実際に中身を見れば以下のような構造になっており「text」から「attribs」にて挟まれた箇所にテキストが格納されています。

{"head":xx,"savepointDataFileId":"xx","savepointListObject":.."atext":{"text":"MAINTEXT","attribs":...

よって以下にある通りの構文で前後を切り出し

改行コードがそのまま文字列になっているので明示的に改行を差し込んでいます。

終わりに

JSONの構造から本文の箇所を抜き出しているのみなので、例えば装飾部分はそのまま表示されるので可読性は完璧ではないものの記載されている中身をターミナル上で確認する際には便利なワンライナーなのでぜひ同様のことに興味がある方は活用ください。