Я пытаюсь разбить файл, используя AWK в одной строке, но код ниже, с которым я пришел, работает неправильно.AWK split для нескольких строк разделителей
awk '
BEGIN { idx=0; file="original_file.split." }
/^REC_DELIMITER.(HIGH|TOP)$/ { idx++ }
/^REC_DELIMITER.TOP$/,/^REC_DELIMITER.(HIGH|TOP)$/ { print > file sprintf("%03d", idx) }
' original_file
Тестовый файл "original_file":
REC_DELIMITER.TOP
lineA1
lineA2
lineA3
REC_DELIMITER.HIGH
lineB1
lineB2
lineB3
REC_DELIMITER.TOP
lineC1
lineC2
lineC3
REC_DELIMITER.HIGH
lineD1
lineD2
lineD3
AWK код выше для REC_DELIMITER.TOP и он дает мне эти файлы:
original_file.split.001:
REC_DELIMITER.TOP
original_file.split.003:
REC_DELIMITER.TOP
однако, я пытаюсь для получения:
original_file.split.001:
REC_DELIMITER.TOP
lineA1
lineA2
lineA3
original_file.split.003:
REC_DELIMITER.TOP
lineC1
lineC2
lineC3
Будет отсутствовать ее запись разделители, и в случае необходимости, мы можем работать для них, как REC_DELIMITER.HIGH, таким образом, получать файлы, как показано ниже:
original_file.split.002:
REC_DELIMITER.HIGH
lineB1
lineB2
lineB3
original_file.split.004:
REC_DELIMITER.HIGH
lineD1
lineD2
lineD3
Любая помощь ребята очень ценят, я пытался получить эту работу за последние несколько дней и код AWK выше - лучшее, что я смог получить. Мне нужна помощь мастеров AWK. :)
Спасибо!
Cramming 4 строки кода на одну строку не полезны для удобства чтения. Также избавиться от HTML из вашего образца ввода/вывода, если это действительно не присутствует в ваших файлах. –
спасибо .. HTML удален. – Jose