csplitの挙動がGNUとBSDでかなり違うようなのですが、POSIX的にはどちらが正しいのでしょうか?
(サンプルは 逆引きUNIXコマンド/指定したキーワードでファイルを分割する・csplit より拝借しました)
GNU版
shell
1user@demo:~$ cat denpyo.txt 2PRODUCT NO: 1 3PRODUCT NAME: SQL SOFTWARE 4PRODUCT PRICE: 100 5PRODUCT NO: 2 6PRODUCT NAME: OS SOFTWARE 7PRODUCT PRICE: 200 8PRODUCT NO: 3 9PRODUCT NAME: HTML SOFTWARE 10PRODUCT PRICE 300 11PRODUCT NO: 4 12PRODUCT NAME: NETWORK SOFTWARE 13PRODUCT PRICE 400 14user@demo:~$ csplit -f denpyo/ denpyo.txt '/^PRODUCT NO:.*/' {2} 150 1660 1759 18123 19user@demo:~$ ls denpyo/ 2000 01 02 03 21user@demo:~$ cat denpyo/00 22user@demo:~$ cat denpyo/01 23PRODUCT NO: 1 24PRODUCT NAME: SQL SOFTWARE 25PRODUCT PRICE: 100 26user@demo:~$ cat denpyo/02 27PRODUCT NO: 2 28PRODUCT NAME: OS SOFTWARE 29PRODUCT PRICE: 200 30user@demo:~$ cat denpyo/03 31PRODUCT NO: 3 32PRODUCT NAME: HTML SOFTWARE 33PRODUCT PRICE 300 34PRODUCT NO: 4 35PRODUCT NAME: NETWORK SOFTWARE 36PRODUCT PRICE 400
BSD版
shell
1PRODUCT NO: 1 2PRODUCT NAME: SQL SOFTWARE 3PRODUCT PRICE: 100 4PRODUCT NO: 2 5PRODUCT NAME: OS SOFTWARE 6PRODUCT PRICE: 200 7PRODUCT NO: 3 8PRODUCT NAME: HTML SOFTWARE 9PRODUCT PRICE 300 10PRODUCT NO: 4 11PRODUCT NAME: NETWORK SOFTWARE 12PRODUCT PRICE 400 13mmns2016:~/projects/playground/csplit $ csplit -f denpyo/ denpyo.txt '/^PRODUCT NO:.*/' {2} 1460 1559 1660 1763 18mmns2016:~/projects/playground/csplit $ ls denpyo/ 1900 01 02 03 20mmns2016:~/projects/playground/csplit $ cat denpyo/00 21PRODUCT NO: 1 22PRODUCT NAME: SQL SOFTWARE 23PRODUCT PRICE: 100 24mmns2016:~/projects/playground/csplit $ cat denpyo/01 25PRODUCT NO: 2 26PRODUCT NAME: OS SOFTWARE 27PRODUCT PRICE: 200 28mmns2016:~/projects/playground/csplit $ cat denpyo/02 29PRODUCT NO: 3 30PRODUCT NAME: HTML SOFTWARE 31PRODUCT PRICE 300 32mmns2016:~/projects/playground/csplit $ cat denpyo/03 33PRODUCT NO: 4 34PRODUCT NAME: NETWORK SOFTWARE 35PRODUCT PRICE 400
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。