Как скопировать разные равномерно распределенные блоки текста из одного файла в несколько файлов, содержащих каждый блок - PullRequest
0 голосов
/ 08 января 2020

Допустим, у меня есть текстовый файл, подобный следующему:

cheese
a b c 
d e f 
*

cheese
g h i 
j k l 
* 

cheese 
m n o 
p q r 
*
...

I wi sh, чтобы скопировать и добавить каждый блок текста под строкой cheese в 3 других файла.

То есть, допустим, у меня есть файлы 1.txt, 2.txt и 3.txt в некотором каталоге.

После добавления 1.txt должен выглядеть следующим образом:

bla bla bla... 
a b c 
d e f 
* 

и 3.txt должен выглядеть следующим образом:

bla bla bla...
m n o 
p q r 
*

1 Ответ

1 голос
/ 08 января 2020

Не могли бы вы попробовать следующее.

awk '
/cheese/{
  close(file)
  outfile++
  file=outfile".txt"
  next
}
{
  print > (file)
}
' Input_file

Объяснение: Добавление подробного объяснения для кода выше.

awk '                   ##Starting awk program from here.
/cheese/{               ##Checking condition if line contains string cheese then do following.
  close(file)           ##Closing output file with close statement.
  outfile++             ##Increment variable outfile with 1 each time cursor comes here.
  file=outfile".txt"    ##Creating variable named file whose value is variable outfile and string .txt in it.
  next                  ##next will skip all further statements from here.
}
{
  print > (file)        ##Printing all lines into output file.
}
' Input_file            ##Mentioning Input_file name here.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...