로그 데이터 예:
SVCELPTIME=19,FAILPT=9580-8582,MICROSERVICE=YES
SVCELPTIME=411,FAILPT=9210-80129210-8686,MICROSERVICE=YES
REFNO=JAJRJZ,TXNREFNO=63165718100281723,SVCELPTIME=21,FAILPT=9210-80129210-86519210-8651,CD=PT
A는 FAILPT
"4비트 - 4비트"로 정의됩니다. 예를 들어 9580-8582
. 내가 겪고 있는 문제는 일부 줄에서 여러 개의 FAILPT
''가 첫 번째 줄까지 잘린다는 것입니다. 예를 들어 9580-85819580-85829580-8583
, 각각을 별도의 키-값 쌍으로 처리해야 합니다.
sed를 사용하세요:
echo FAILPT=9210-80129210-86519230-8012 | sed 's/FAILPT=//; s/.\{4\}\|.\{4\}-.\{4\}/FAILPT=&,/g; s/,$//'
이것은 다음을 생성합니다:
FAILPT=9210-8012,FAILPT=9210-8651,FAILPT=9230-8012
<- 정확히 내가 필요한 것.
하지만 로그 파일을 적용하려고 하면 모든 것이 중단됩니다.
예를 들어(예제 줄 사용):
FAILPT=SVCE,FAILPT=LPTI,FAILPT=ME=1,FAILPT=9,95,FAILPT=80-8,FAILPT=582,,FAILPT=MICR,FAILPT=OSER,FAILPT=VICE,FAILPT==YES
FAILPT=SVCE,FAILPT=LPTI,FAILPT=ME=4,FAILPT=11,9,FAILPT=210-,FAILPT=8012,FAILPT=9210-8686,FAILPT=,MIC,FAILPT=ROSE,FAILPT=RVIC,FAILPT=E=YE,S
FAILPT=REFN,FAILPT=O=JA,FAILPT=JRJZ,FAILPT=,TXN,FAILPT=REFN,FAILPT=O=63,FAILPT=1657,FAILPT=1810,FAILPT=0281,FAILPT=723,,FAILPT=SVCE,FAILPT=LPTI,FAILPT=ME=2,FAILPT=1,92,FAILPT=10-8,FAILPT=0129,FAILPT=210-,FAILPT=8651,FAILPT=9210-8651,FAILPT=,CD=,PT
FAILPT=
행의 나머지 부분을 건드리지 않고 값을 바꾸거나 추가하려면 어떻게 해야 합니까 ?
답변1
나는 내 자신의 질문에 의견으로 대답했습니다. 4~4개의 패턴이나 그 안에 있는 여러 패턴만 찾으면 됩니다. 일을 엉망으로 만드는 것은 OR 절입니다.
sed '/FAILPT=*,/p; s/FAILPT=//; s/.\{4\}-.\{4\}/FAILPT=&,/g; s/,,/,/'