анализ больших данных - PullRequest
       6

анализ больших данных

0 голосов
/ 20 ноября 2018
# 1.0
#=GF ID   45651
#=GF AC   CD7.8

Я использовал команду

awk '{print $0 > $2 NR}' RS='//' assignment.txt

Это генерирует файлы с именами file0, file1 и т. Д.

Ответы [ 2 ]

0 голосов
/ 20 ноября 2018

С GNU awk для RS с несколькими символами и обработкой открытых файлов:

awk -v RS='\n//\n' -F'\n' '{print > ($3 ".txt")}' file

Разумеется, это приведет к ужасным именам выходных файлов, поскольку они будут содержать как пробел, так и знаки = и начинаться с# но это то, что вы просили ...

0 голосов
/ 20 ноября 2018

Не могли бы вы попробовать следующее, учитывая, что вы НЕ хотите, чтобы // в ваших выходных файлах.

awk '
/^\/\//{
  close(file".txt")
  flag=val=""
}
/#=GF AC   PF.*/{
  flag=1
  file=$0
  sub(/^#=/,"",file)
  print val ORS $0 > file".txt"
  next
}
flag{
  print > file".txt"
}
!flag{
  val=val?val ORS $0:$0
}' Input_file

Приведенный выше код удалит #= из имен файлов, если вам это тоже нужно в выходных данныхИмена файлов затем удалите оператор sub(/^#=/,"",file) из приведенного выше кода.

Объяснение: Добавление объяснения для вышеуказанного кода тоже сейчас.

awk '                               ##awk program starts here.
/^\/\//{                            ##Checking condition if a line has // then do following.
  close(file".txt")                 ##Using close command to close file with file named file".txt" here to avoid TOO MANY FILES OPENED.
  flag=val=""                       ##Nullifying variables flag and val here.
}
/#=GF AC   PF.*/{                   ##Checking condition if a line starts from #=GF AC   PF .* will match anything here, if yes then do following.
  flag=1                            ##Setting variable flag as 1 here.
  file=$0                           ##Setting variable file value to current line here.
  sub(/^#=/,"",file)                ##Substituting #= from start of the line with variable file.
  print val ORS $0 > file".txt"     ##Printing variable val ORS(output record separator) current line and printing it to file".txt"
  next                              ##next will skip all further statements from here onward.
}
flag{                               ##Checking condition if variable flag is SET then do following.
  print > file".txt"                ##Printing current lines to file".txt" file name.
}
!flag{                              ##Checking condition here is variable flag is NOT SET then do following.
  val=val?val ORS $0:$0             ##Creating variable val and concatenating to its own value.
}' Input_file                       ##Mentioning Input_file name here.
...