ブログ

特定の文字列でファイルを分割する方法

at_shiita.ishigaki
2021年10月22日 10時04分

特定の文字列でファイルを分割するにはcsplitコマンドを使用します。
分割する文字列は/で囲む必要があります。
※ここでは例として、test.jsonファイルを { で分割します。

[armadillo ~]# cat test.json
{
        "User" : [
                {
                        "id": 1,
                        "tag": "a"
                },
                {
                        "id": 2,
                        "tag": "b"
                },
                {
                        "id": 3,
                        "tag": "c"
                }
        ]
}
[armadillo ~]# csplit test.json { {*}
csplit: ‘{’: invalid pattern
[armadillo ~]# csplit test.json /{/ {*}
0
14
35
35
39
[armadillo ~]# ls
test.json  xx00  xx01  xx02  xx03 xx04
[armadillo ~]# cat xx00
[armadillo ~]# cat xx01
"User" : [
[armadillo ~]# cat xx02
        {
                "id": 1,
                "tag": "a"
        },

csplitコマンドが成功した場合は分割したファイルのバイトサイズが表示されます。
また、デフォルトでは出力されるファイルは xx〇〇という形になります。
出力ファイルのxxを変更するには-fオプションを使用します。

[armadillo ~]# csplit -f FILE test.json /{/ {*}
0
14
35
35
39
[armadillo ~]# ls
FILE00  FILE01  FILE02  FILE03 FILE04  test.json

空のファイルを出力しない場合は-zオプションを使用します。

[armadillo ~]# csplit -z test.json /{/ {*}
14
35
35
39
[armadillo ~]# ls
xx00 xx01 xx02 xx03  test.json