
RFH2 헤더가 포함된 많은 MQ 메시지가 포함된 대용량 파일이 있습니다. 파일의 각 메시지는 빈 줄로 구분됩니다. 이제 이 큰 파일을 각각 RFH2 헤더가 있는 단일 메시지가 포함된 작은 파일로 분할해야 합니다.
아래 awk 명령으로 시도했습니다.
awk '{RS=""} {print $0}' inputfile
유용하지 않은 제어 문자 없이 첫 번째 줄을 인쇄합니다. 첫 번째 MQ RFH 헤더 라인은 RFH ^B^C^X^A^Q^C3MQSTR ^D¸
메시지 데이터와 같이 시작됩니다. awk 출력은 텍스트만 인쇄합니다 RFH
. 이 명령을 실행한 후 입력 파일에 50개의 메시지가 있으면 텍스트만 포함된 50개의 파일을 얻게 됩니다 RFH
. RFH2 헤더와 데이터가 포함된 파일이 50개 있을 것으로 예상됩니다.
민감한 데이터가 포함되어 있기 때문에 실제 파일 입력을 제공할 수 없습니다. 파일은 다음으로 시작합니다.
RFH ^B^C^X^A^Q^C3MQSTR ^D¸X<jms>
.........some text of many lines.....
RFH ^B^C^X^A^Q^C3MQSTR ^D¸X<jms>
........some text of many lines.....
RFH ^B^C^X^A^Q^C3MQSTR ^D¸X<jms>
...
그리고 출력 파일에는 다음이 있어야 합니다.
RFH ^B^C^X^A^Q^C3MQSTR ^D¸X<jms>
.........some text of many lines
답변1
여기요. 입력(테스트파일):
RFH ^B^C^X^A^Q^C3MQSTR ^D¸X<jms>
.........some text of many lines.....
.........some text of many lines.....
.........some text of many lines.....
.........some text of many lines.....
.........some text of many lines.....
RFH ^B^C^X^A^Q^C3MQSTR ^D¸X<jms>
........some text of many lines.....
.........some text of many lines.....
.........some text of many lines.....
.........some text of many lines.....
.........some text of many lines.....
.........some text of many lines.....
RFH ^B^C^X^A^Q^C3MQSTR ^D¸X<jms>
.........some text of many lines.....
.........some text of many lines.....
.........some text of many lines.....
.........some text of many lines.....
암호:
awk '{print $0 > "file" NR}' RS='\n\n' testfile
"file"을 원하는 파일 이름으로 바꾸십시오. 이 예를 사용하면 다음을 얻을 수 있습니다.
$ cat file1
RFH ^B^C^X^A^Q^C3MQSTR ^D¸X<jms>
.........some text of many lines.....
.........some text of many lines.....
.........some text of many lines.....
.........some text of many lines.....
.........some text of many lines.....
$ cat file2
RFH ^B^C^X^A^Q^C3MQSTR ^D¸X<jms>
........some text of many lines.....
.........some text of many lines.....
.........some text of many lines.....
.........some text of many lines.....
.........some text of many lines.....
.........some text of many lines.....
$ cat file3
RFH ^B^C^X^A^Q^C3MQSTR ^D¸X<jms>
.........some text of many lines.....
.........some text of many lines.....
.........some text of many lines.....
.........some text of many lines.....
답변2
이것은 가깝습니다:
awk '{RS=""} {print $0}' inputfile
그러나 RS 변수를 정의해야 합니다.~ 전에awk가 파일 읽기를 시작합니다. 다음 중 하나를 선택하십시오:
awk 'BEGIN {RS=""} {print}' inputfile
awk -v RS="" '{print}' inputfile
제어 문자를 보려면 awk 출력을 다음으로 파이프하십시오.cat -v
awk -v RS="" 1 inputfile | cat -v