나는 ANSI 835 일반 텍스트 파일로 작업하고 있으며 "BPR"로 시작하고 그 마커를 포함하여 "TRN"으로 끝나는 세그먼트의 모든 데이터를 캡처하려고합니다. 주어진 파일은 한 줄입니다. 그 라인 내에서 세그먼트는 항상 그런 것은 아니지만 반복 될 수 있습니다. 한 번에 여러 파일에 대한 프로세스를 실행하고 이상적으로 세그먼트 (들) 발생하는 파일 이름을 기록 할 수있을 것이라고. 여기 내가 기반으로, 지금까지 무엇을 인 answer to another question :필연적으로 반복하지 않는 패턴 추출
#!/bin/sed -nf
/BPR.*TRN/ {
s/.*\(BPR.*TRN\).*/\1/p
d
}
/from/ {
: next
N
/BPR/ {
s/^[^\n]*\(BPR.*TRN\)[^n]*/\1/p
d
}
$! b next
}
나는이를 가지고 다음과 같습니다 파일에 결과를 쓰기 모든 파일을 실행 이상적으로 각
BPR*I*393.46*C*ACH*CCP*01*011900445*DA*0000009046*1066033492**01*071923909*DA*72
34692932*20150120~TRN
BPR*I*1611.07*C*ACH*CCP*01*031100209*DA*0000009108*1066033492**01*071923909*DA*7
234692932*20150122~TRN
BPR*I*1415.25*C*CHK************20150108~TRN
BPR*H*0*C*NON************20150113~TRN
BPR*I*127.13*C*CHK************20150114~TRN
BPR*I*22431.28*C*ACH*CCP*01*071000152*DA*99643*1361236610**01*071923909*DA*72346
92932*20150112~TRN
BPR*I*182.62*C*ACH*CCP*01*071000152*DA*99643*1361236610**01*071923909*DA*7234692
932*20150115~TRN
을 라인이 같은 파일 이름 앞에 추가된다 :
IDI.Aetna.011415.64539531.rmt:BPR*I*393.46*C*ACH*CCP*01*011900445*DA*0000009046*1066033492**01*071923909*DA*72
34692932*20150120~TRN
IDI.BCBSIL.010915.6434438.rmt:BPR*I*1611.07*C*ACH*CCP*01*031100209*DA*0000009108*1066033492**01*071923909*DA*7
234692932*20150122~TRN
IDI.CIGNA.010215.64058847.rmt:BPR*I*1415.25*C*CHK************20150108~TRN
IDI.GLDRULE.011715.646719.rmt:BPR*H*0*C*NON************20150113~TRN
IDI.MCREIN.011915.6471442.rmt:BPR*I*127.13*C*CHK************20150114~TRN
IDI.UHC.011915.64714417.rmt:BPR*I*22431.28*C*ACH*CCP*01*071000152*DA*99643*1361236610**01*071923909*DA*72346
92932*20150112~TRN
IDI.UHC.011915.64714417.rmt:BPR*I*182.62*C*ACH*CCP*01*071000152*DA*99643*1361236610**01*071923909*DA*7234692
932*20150115~TRN
마지막 두 라인 세그먼트 패턴이 반복되는 파일의 예 것이다.
각 줄 앞에 파일 이름을 추가하는 것이 이상적입니다. 필자가 정말로 필요로하는 것은 "BPR ... TRN"세그먼트가 반복되어 있고 그 파일의 모든 세그먼트를 출력 파일에 쓰는 주어진 단일 라인 파일을 처리 할 수 있어야한다는 것입니다.
당신이 몇 가지 예제 입력을 보여 주 시겠어요? 특히 "주어진 파일은 한 줄입니다."라는 질문에 대해서는 샘플 코드가 줄 바꿈 문자를 제거하는 길이가됩니다. 또한 샘플 코드는'from'을 포함하는 행을 찾고'description'가 왜 중요한지에 대한 언급을하지 않습니다. 일부 샘플 입력은 명확히하는 데 도움이 될 수 있습니다. – John1024
sed는이 작업에 대한 잘못된 도구이므로 100 %입니다. awk가 개발 된 1907 년 중반에 사용되는 대부분의 구문이 쓸모 없게되고 일부 샘플 입력과 예상 출력을 게시하여 다시 시작하므로 sed 스크립트를 버리십시오. –
COBOL을 사용할 수 있습니까? 언어가이 문제 영역에서 인기가 있다고 생각합니다. –