逆引きUNIXコマンド/指定したキーワードでファイルを分割する・csplit
の編集
Top
/
逆引きUNIXコマンド
/
指定したキーワードでファイルを分割する・csplit
[
トップ
] [
編集
|
差分
|
バックアップ
|
添付
|
リロード
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
]
-- 雛形とするページ --
(no template pages)
#navi(../) * 指定したキーワードでファイルを分割する・csplit [#n90b5b04] #contents csplitコマンドでファイル内にある特定のキーワード(文字列)でファイルを分割することができます。~ 以下、伝票内容?が複数続く1つのテキストファイルを特定のキーワードで分割してみます。 #br #htmlinsertpcsp(linux_ads_top.html,linux-sp.html) * 使用するファイル内容 [#qe6076d2] 使用するファイル内容は以下のものです。 $ 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) [#ne4ed227] 以下のコマンドを実行するとPPRODUCT NO:で分割したファイルが3つ作成されます。 csplit denpyo.txt '/^PRODUCT NO:.*/' {2} ** 実行結果 [#vfe2cfd3] csplitの引数の1つ目は対象となるファイル、2つ目は分割するパターン、3つ目は回数となります。~ 以下のように分割された出力ファイル(xxから始まるファイル)が作成されます。~ xx00は0バイトのファイルが出力されます。xx01, xx02と分割されたファイルが作成され、残りはxx03として出力されています。 $ 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) [#we9623cb] 前回のcsplitでは0バイトのファイルとファイル名がxxとなっています。~ これをcsplitのオプションで変更します。~ また、0バイトのファイルの出力を抑止と回数には*を指定し全てを分割してみます。~ この場合、以下のようになります。~ |オプション|説明| |-z|0バイトのファイルを出力しない| |-f 文字列|ファイル名を指定した文字列+数字とする| |{*}|*を指定したので回数は分割できるかぎり実行| csplit -z -f denpyo denpyo.txt '/^PRODUCT NO:.*/' {*} ** 実行結果 [#v70ce404] csplitの-zオプションにより0バイトのファイルが出力されていません。~ また、-fオプションによりdenpyo00〜denpyo03の分割ファイルが作成されています。 $ 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 これで指定したキーワード(文字列)でファイル分割することができます。~ データファイルの加工やマスタデータファイルの加工などに利用することができます。 * 関連記事 [#e2591386] -サイズや行数でファイルを分割する場合~ [[逆引きUNIXコマンド/ファイルの分割をしたい・splitコマンド]] #br #htmlinsertpcsp(linux_ads_btm.html,linux-sp.html) #br
タイムスタンプを変更しない
#navi(../) * 指定したキーワードでファイルを分割する・csplit [#n90b5b04] #contents csplitコマンドでファイル内にある特定のキーワード(文字列)でファイルを分割することができます。~ 以下、伝票内容?が複数続く1つのテキストファイルを特定のキーワードで分割してみます。 #br #htmlinsertpcsp(linux_ads_top.html,linux-sp.html) * 使用するファイル内容 [#qe6076d2] 使用するファイル内容は以下のものです。 $ 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) [#ne4ed227] 以下のコマンドを実行するとPPRODUCT NO:で分割したファイルが3つ作成されます。 csplit denpyo.txt '/^PRODUCT NO:.*/' {2} ** 実行結果 [#vfe2cfd3] csplitの引数の1つ目は対象となるファイル、2つ目は分割するパターン、3つ目は回数となります。~ 以下のように分割された出力ファイル(xxから始まるファイル)が作成されます。~ xx00は0バイトのファイルが出力されます。xx01, xx02と分割されたファイルが作成され、残りはxx03として出力されています。 $ 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) [#we9623cb] 前回のcsplitでは0バイトのファイルとファイル名がxxとなっています。~ これをcsplitのオプションで変更します。~ また、0バイトのファイルの出力を抑止と回数には*を指定し全てを分割してみます。~ この場合、以下のようになります。~ |オプション|説明| |-z|0バイトのファイルを出力しない| |-f 文字列|ファイル名を指定した文字列+数字とする| |{*}|*を指定したので回数は分割できるかぎり実行| csplit -z -f denpyo denpyo.txt '/^PRODUCT NO:.*/' {*} ** 実行結果 [#v70ce404] csplitの-zオプションにより0バイトのファイルが出力されていません。~ また、-fオプションによりdenpyo00〜denpyo03の分割ファイルが作成されています。 $ 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 これで指定したキーワード(文字列)でファイル分割することができます。~ データファイルの加工やマスタデータファイルの加工などに利用することができます。 * 関連記事 [#e2591386] -サイズや行数でファイルを分割する場合~ [[逆引きUNIXコマンド/ファイルの分割をしたい・splitコマンド]] #br #htmlinsertpcsp(linux_ads_btm.html,linux-sp.html) #br
テキスト整形のルールを表示する