指定したキーワードでファイルを分割する・csplit †csplitコマンドでファイル内にある特定のキーワード(文字列)でファイルを分割することができます。 使用するファイル内容 †使用するファイル内容は以下のものです。 $ cat denpyo.txt PRODUCT NO: 1 PRODUCT NAME: SQL SOFTWARE PRODUCT PRICE: 100 PRODUCT NO: 2 PRODUCT NAME: OS SOFTWARE PRODUCT PRICE: 200 PRODUCT NO: 3 PRODUCT NAME: HTML SOFTWARE PRODUCT PRICE 300 PRODUCT NO: 4 PRODUCT NAME: NETWORK SOFTWARE PRODUCT PRICE 400 PRODUCT NO:キーワードで分割してみる(1) †以下のコマンドを実行するとPPRODUCT NO:で分割したファイルが3つ作成されます。 csplit denpyo.txt '/^PRODUCT NO:.*/' {2} 実行結果 †csplitの引数の1つ目は対象となるファイル、2つ目は分割するパターン、3つ目は回数となります。 $ csplit denpyo.txt '/^PRODUCT NO:.*/' {2} 0 60 59 123 $ ls -l -rw-r--r-- 1 sakura sakura 242 2011-07-11 01:04 denpyo.txt -rw-r--r-- 1 sakura sakura 0 2011-07-11 01:14 xx00 -rw-r--r-- 1 sakura sakura 60 2011-07-11 01:14 xx01 -rw-r--r-- 1 sakura sakura 59 2011-07-11 01:14 xx02 -rw-r--r-- 1 sakura sakura 123 2011-07-11 01:14 xx03 $ cat xx00 $ cat xx01 PRODUCT NO: 1 PRODUCT NAME: SQL SOFTWARE PRODUCT PRICE: 100 $ cat xx02 PRODUCT NO: 2 PRODUCT NAME: OS SOFTWARE PRODUCT PRICE: 200 $ cat xx03 PRODUCT NO: 3 PRODUCT NAME: HTML SOFTWARE PRODUCT PRICE 300 PRODUCT NO: 4 PRODUCT NAME: NETWORK SOFTWARE PRODUCT PRICE 400 PRODUCT NO:キーワードで分割してみる(2) †前回のcsplitでは0バイトのファイルとファイル名がxxとなっています。
csplit -z -f denpyo denpyo.txt '/^PRODUCT NO:.*/' {*} 実行結果 †csplitの-zオプションにより0バイトのファイルが出力されていません。 $ csplit -z -f denpyo denpyo.txt '/^PRODUCT NO:.*/' {*} 60 59 60 63 $ ls -l -rw-r--r-- 1 sakura sakura 242 2011-07-11 01:04 denpyo.txt -rw-r--r-- 1 sakura sakura 60 2011-07-11 01:29 denpyo00 -rw-r--r-- 1 sakura sakura 59 2011-07-11 01:29 denpyo01 -rw-r--r-- 1 sakura sakura 60 2011-07-11 01:29 denpyo02 -rw-r--r-- 1 sakura sakura 63 2011-07-11 01:29 denpyo03 $ cat denpyo00 PRODUCT NO: 1 PRODUCT NAME: SQL SOFTWARE PRODUCT PRICE: 100 $ cat denpyo01 PRODUCT NO: 2 PRODUCT NAME: OS SOFTWARE PRODUCT PRICE: 200 $ cat denpyo02 PRODUCT NO: 3 PRODUCT NAME: HTML SOFTWARE PRODUCT PRICE 300 $ cat denpyo03 PRODUCT NO: 4 PRODUCT NAME: NETWORK SOFTWARE PRODUCT PRICE 400 これで指定したキーワード(文字列)でファイル分割することができます。 関連記事 †
|