Мне нужно написать программу на R, которая будет разбивать текстовый файл на основе строки, начинающейся с шаблона, включая строки после этого шаблона до следующего шаблона (тела). Если общее количество строк превышает 10 КБ, разбейте файл на файлы по 10 КБ, начиная со строки шаблона и включая тело этого шаблона. Если последняя строка начинается в теле этого шаблона, разделите его в начале предыдущего шаблона.
Пример текстового файла:
"GROUP"; "DETAILA1"; "DETAILA2";
"BODY"; "DETAILA11"; "DETAILA21";
"BODY"; "DETAILA12"; "DETAILA22";
"BODY"; "DETAILA13"; "DETAILA23";
"BODY";
"GROUP"; "DETAILB1"; "DETAILB2";
"BODY"; "DETAILB11"; "DETAILB21";
"BODY"; "DETAILB12"; "DETAILB22";
"WORD"; "DETAILB13"; "DETAILB33";
"PRINT";
"GROUP"; "DETAILA1"; "DETAILA2";
"BODY"; "DETAILC11"; "DETAILC21";
"WORD"; "DETAILC12"; "DETAILC22";
"BODY"; "DETAILC13"; "DETAILC23";
"PRINT";
…
file_path <- '.\\Input.txt'
# Read blocks of lines ...
raw_notice <- file(file_path, open = "r")
line_vec <- c()
start_patt <- "[[:punct:]]+[GROUP]"
# What I tested so far
# Start of loop
while(TRUE){
# Read each line of the file
notice_line = readLines(raw_notice, n=1)
# Start of conditional
if(length(notice_line) == 0) # Account for blank lines
break
else if (grepl(start_patt, notice_line)) # IF this start_pattern exists in line of file
line_vec <- c(line_vec, notice_line) # Then add the line to the file ** NOT WHAT WE WANT BUT CHECK IF CONDITIONAL WORKS
else
print("Not there")
}
# and split into new file
# pseudo code
split.file <- function (file) {
if length(file) > 10000
if last_line == pattern
pattern_body <- seq(pattern, next_pattern)
splitFile(file, by=pattern_body)
new_file1 <- c(pattern_body)
else if last_line == pattern_body
splitFile(file, by=previous_pattern_body)
else
break
}