труба выводит gzip в csplit - PullRequest
       25

труба выводит gzip в csplit

1 голос
/ 21 сентября 2019

Эта команда работает:

csplit really_big_file.txt -f ../dump/really_big_file_ /^H\|756\|/ {*}

, но эта команда:

gzip -dc  really_big_file.txt.gz | csplit -f ../dump/really_big_file_ /^H\|756\|/ {*}

дает:

csplit: cannot open '/^H|756|/' for reading: No such file or directory

Как передать вывод gzip в csplit?

1 Ответ

1 голос
/ 21 сентября 2019

В man csplit говорится, что файл всегда идет перед шаблоном:

СИНОПСИС

   csplit [OPTION]... FILE PATTERN...

Так должно быть:

gzip -dc  really_big_file.txt.gz | csplit -f ../dump/really_big_file_ - /^H\|756\|/ {*}

Пример:

$ gzip -dc inputfile.txt.gz
abc
searchstring
def
searchstring
egh
searchstring
$ mkdir split
$ gzip -dc inputfile.txt.gz | csplit  -f split/file - /searchstring/ {*}
$ ls -Al split/
total 16
-rw-r--r-- 1 ja users  4 Sep 21 17:53 file00
-rw-r--r-- 1 ja users 17 Sep 21 17:53 file01
-rw-r--r-- 1 ja users 17 Sep 21 17:53 file02
-rw-r--r-- 1 ja users 13 Sep 21 17:53 file03
$ cat split/*
abc
searchstring
def
searchstring
egh
searchstring
...