Распечатайте все строки между искавшим шаблоном текстового файла в другой файл

Это должно показать Вам файл однажды в секунду:

watch -n 1 cat file
3
06.08.2014, 15:52
3 ответа

Как насчет простого инкрементирования счетчика файлов каждый раз, когда вы встретите строку Request?

awk '/Request/ {n++; next}; {print > "file"n}' test.txt
2
27.01.2020, 21:23

или воспользуемся встроенной переменной NR для номера записи:

awk -v RS='\\.+Request\\.+'  '{if (NR==1) next}  {print > "file"NR-1 }' test.txt

и не создадим пустой файл для file1.

Чуть более длинная строка удаляет пустую строку в начале и в конце каждого выходного файла:

awk -v RS='\\.+Request\\.+' -v ORS= '{if (NR==1) next}  { gsub("^\n",""); print > "file"NR-1 }' test.txt
0
27.01.2020, 21:23
csplit -f file -z --suppress-matched - '/Request/' '{*}' <<\DATA
....Request....
asaksa
sda
dsad
dsad
....Request...
21mklk
nnm212
mkmr543
849238
....Request...
4392840
kndska
94i0-jkfjdk
smdla
.....Request..
839281
ksndlka
nsc
mcxmzl
DATA

Вы спрашиваете, как использовать csplit, в основном. Его задача состоит в том, чтобы разделить его входной файл на отдельные файлы на основе контекстных совпадений.

ls 

file00  file01  file02  file03

cat file00

asaksa
sda
dsad
dsad

cat file*

asaksa
sda
dsad
dsad
21mklk
nnm212
mkmr543
849238
4392840
kndska
94i0-jkfjdk
smdla
839281
ksndlka
nsc
mcxmzl
1
27.01.2020, 21:23

Теги

Похожие вопросы