awk를 사용하여 레코드 기반(여러 줄) 텍스트를 csv로 변환

awk를 사용하여 레코드 기반(여러 줄) 텍스트를 csv로 변환

내 입력 파일은 다음과 같습니다.

Session: 324098324
Object: dd02:/24
Time: Sat 28 Oct 2017 12:40:41 AM CEST
Status: Error
ID: 5F2B0121-4F2B-481D-B79F-2DC827B85093/16123991

Session: 324321
Object: ad02:/24
Time: Sun 13 May 2018 12:00:43 PM CEST
Status: Ok
ID: 5F2B0121-4F2B-481D-B79F-2DC827B85093/21857092

Session: 132452
Object: xd01:/24
Time: Sun 08 Jul 2018 12:16:56 PM CEST
Status: Error
ID: 5F2B0121-4F2B-481D-B79F-2DC827B85093/21695878

출력은 다음과 같아야 합니다: [오류]

Session: 324098324, Object: ad02:/24, Time: Sat 28 Oct 2017 12:40:41 AM CEST, Status: Error, ID: 5F2B0121-4F2B-481D-B79F-2DC827B85093/16123991
Session: 324098324, Object: ad02:/24, Time: Sat 28 Oct 2017 12:40:41 AM CEST, Status: Error, ID: 5F2B0121-4F2B-481D-B79F-2DC827B85093/16123991
Session: 324098324, Object: ad02:/24, Time: Sat 28 Oct 2017 12:40:41 AM CEST, Status: Error, ID: 5F2B0121-4F2B-481D-B79F-2DC827B85093/16123991

편집: 출력 형식에 큰 실수를 했습니다. 위 형식은 CSV로 작동하지 않습니다. 다음과 같은 형식이 필요합니다.

Session, Object, Time, Status, ID
324098324, ad02:/24, Sat 28 Oct 2017 12:40:41 AM CEST, Error, 5F2B0121-4F2B-481D-B79F-2DC827B85093/16123991
324098324, ad02:/24, Sat 28 Oct 2017 12:40:41 AM CEST, Error, 5F2B0121-4F2B-481D-B79F-2DC827B85093/16123991
324098324, ad02:/24, Sat 28 Oct 2017 12:40:41 AM CEST, Error, 5F2B0121-4F2B-481D-B79F-2DC827B85093/16123991

답변1

awk -v RS='' '{gsub("\n", ", "); print}' input

답변2

paste쓸 수 있는? 노력하다

paste -s -d"\t\t\t\t\t\n" file

답변3

grep -A4 "Session " myfile | paste -s -d ' \n'

grepsession이라는 단어를 찾아 성공하면 4줄을 인쇄합니다.

paste단일 라인으로 변환하십시오.

출력 구분 기호를 쉽게 설정할 수 있습니다.paste -s -d '||||\n' OR paste -s -d ',,,,\n'

관련 정보