특정 라인 지점에서 특정 문자열 가져오기 [닫기]

특정 라인 지점에서 특정 문자열 가져오기 [닫기]

아래 줄에서는 다음 형식의 특정 필드만 필요합니다.

031100000080,Z45G0001,09:43:08.5234999,09:43:09.7925597,0:1:269,737683

입력 라인:

17/05/2019 09:43:09.792559|TraceDetail    |UPBSStandardGenericBillPaymentComponent.PostBillPaymentTransacti|Total Time [125456]                   |783562  [11] [25458]            | Consumer Number [0345454545000             ] , UCID [Z456G0001]  Sending Time [09:43:08.5234999] Receive Time [09:43:09.7925597] Total Time [0:1:269] STAN is [737683]

답변1

입력을 파이프하세요

sed 's/][^[]*\[/,/g;s/\([^,]*,\)\{3\}//;s/  *,/,/;s/]$//'
  • s/][^[]*\[/,/g[]대부분의 작업은 사이에 있는 모든 것을 제거하고 쉼표로 구분하여 수행됩니다.
  • s/\([^,]*,\)\{3\}//사용하지 않는 첫 번째 필드를 제거하세요.
  • s/ *,/,/쓸모없는 공백 제거
  • s/]$//'마지막으로 마지막 삭제]

고쳐 쓰다: 귀하의 의견에 따르면 각 행의 필드 수와 순서가 다를 수 있습니다. 이 경우 보다 일반적인 접근 방식은 각 행에 필드 이름을 추가하고 루프를 반복하여 해당 필드를 추출하는 것입니다.

sed -e 'G;s/$/,Consumer Number,UCID,Sending Time,Receive Time,Total Time,STAN is,/;:loop' -e 's/ \(.*\) \[\([^] ]*\)\(.*\n.*,\)\1,/\3\2,/;tloop' -e 's/.*\n,//;s/,$//'

이것이 정말로 당신이 원하는 것이라면, 더 자세한 설명을 드릴 수 있습니다.

관련 정보