我正在尝试使用 AWK 单行拆分文件,但我附带的以下代码无法正常工作。
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 大师的帮助。:)
谢谢!